jQuery

2016-03-18 5 views
5

मैं क्या शायद jQueryjQuery

की एक बहुत ही सरल सा

मैं इस तरह एचटीएमएल है के साथ संघर्ष कर रहा हूँ का उपयोग कर डेटा विशेषता का उपयोग कैसे करें:

<div class="star-rating" data-star-rating="5.0"></div> 
<div class="star-rating" data-star-rating="2.0"></div> 

मैं कुछ जावास्क्रिप्ट जो कुछ करने की आवश्यकता है इन तत्वों में से प्रत्येक के स्टार रेटिंग के आधार और वर्तमान में इस तरह दिखता है:

$('.star-rating').jRate({ 
    startColor : '#ccc', 
    endColor : '#ccc', 
    readOnly : true, 
    rating : <value of data-star-rating> 
}); 

मैं डेटा के मूल्य के साथ <value of data-star-rating> बदलना चाहते संबंधित विशेषता तत्व अभी संसाधित किया जा

मुझे लगा कि यह $(this).data('starRating') काम करेगा, लेकिन यह मैं इस स्थिति में डेटा विशेषता के मान कैसे उपयोग कर सकते हैं

प्रतीत नहीं होता है के लिए?

+0

क्या आपने '$ (यह) .डेटा ('स्टार-रेटिंग') 'की कोशिश की है? – j08691

+0

'console.log (("। स्टार-रेटिंग ") क्या होता है। डेटा ('स्टार-रेटिंग')) 'वापसी? आप तत्वों के माध्यम से भी लूप नहीं करते हैं, जो इसे प्राप्त करना चाहिए? 5।0 या 2.0? –

+0

@ksno यह जो भी पहला है वह लौटाता है ... वास्तव में प्रासंगिक नहीं है हालांकि – Edd

उत्तर

4

$(this) तत्व है जिस पर jRate समारोह बुलाया जा रहा है का उल्लेख नहीं करता।

आप अगर वहाँ केवल एक ही है कि वर्ग

$('.star-rating').jRate({ 
    startColor : '#ccc', 
    endColor : '#ccc', 
    readOnly : true, 
    rating : $('.star-rating').data('star-rating') 
}); 

होने अधिक तत्वों के लिए तत्व है का भी उपयोग कर सकते हैं: सभी वर्ग star-rating होने तत्वों से अधिक

दोहराएं और प्लगइन देते jRate संबंधित तत्व के rating मूल्य के साथ व्यक्तिगत रूप से।

$('.star-rating').each(function() { 
    $(this).jRate({ 
     startColor: '#ccc', 
     endColor: '#ccc', 
     readOnly: true, 
     rating: $(this).data('star-rating') 
    }); 
}); 

JSFiddle Demoकि प्लगइन का CDN लिंक नहीं मिला है, इसलिए जावास्क्रिप्ट फलक में minified कोड में ही

1

आप इस का उपयोग करना होगा:

$(this).attr('data-star-rating'); 
+0

यह 'डेटा()' के बारे में सच नहीं है। यह एचटीएमएल डेटा विशेषताओं को वापस करेगा और करता है। – toomanyredirects

5

आप यह भी उपयोग कर सकते हैं:

$(this).data('star-rating'); 

संपादित

फिर से सवाल पढ़ने के बाद। टिप्पणियां सही हैं, आपको प्रत्येक तत्व में जेआरएटी लागू करने के लिए .star-rating सरणी के माध्यम से पुन: प्रारंभ करना चाहिए, मेरी गलतफहमी के लिए खेद है।

$('.star-rating').each(function() {  
    $(this).jRate({ 
     startColor: '#ccc', 
     endColor: '#ccc', 
     readOnly: true, 
     rating: $(this).data('star-rating') 
    }); 
}); 
+0

jQuery के रूप में 1.4.3 एचटीएमएल 5 डेटा- विशेषताओं को स्वचालित रूप से jQuery की डेटा ऑब्जेक्ट में खींचा जाएगा। डब्ल्यू 3 सी एचटीएमएल 5 विनिर्देश के अनुरूप jQuery 1.6 में एम्बेडेड डैश के साथ विशेषताओं का उपचार बदल दिया गया था। – Pradeep

+1

मुझे नहीं पता कि इसमें 5 अपवॉट क्यों हैं क्योंकि यह सवाल का जवाब नहीं देता है? क्यों '$ (यह) .डेटा ('स्टाररेटिंग');' काम नहीं किया है क्योंकि यह बिल्कुल मान्य है। – Jai

+0

बस कह रहा है, हाल के संपादन के बाद यह बिल्कुल [मेरा जवाब] जैसा दिखता है (http://stackoverflow.com/a/36085321/2025923) – Tushar

2

के रूप में वहाँ वर्ग "स्टार रेटिंग" होने ताकि आप elemets और foreach पाश के माध्यम से लूप करने की आवश्यकता होगी लूप में वर्तमान-बार दोहराना तत्व पहुंचा जा सकता है, ताकि आप उस तत्व का उपयोग कर सकते एक से अधिक तत्व हैं। और जेआरएटी लागू करें।

$('.star-rating').forEach(function(dateRating){ 
    $(dateRating).jRate({ 
    startColor : '#ccc', 
    endColor : '#ccc', 
    readOnly : true, 
    rating : $(dateRating).attr("data-star-rating") 
}); 
}); 
+1

हालांकि यह उत्तर शायद सही और उपयोगी है, यह पसंद किया जाता है यदि आप [कुछ स्पष्टीकरण शामिल करते हैं इसके साथ] (http://meta.stackexchange.com/q/114762/159034) यह समझाने के लिए कि यह समस्या को हल करने में कैसे मदद करता है। यह भविष्य में विशेष रूप से उपयोगी हो जाता है, यदि कोई परिवर्तन (संभावित रूप से असंबंधित) है जो इसे काम करना बंद कर देता है और उपयोगकर्ताओं को यह समझने की आवश्यकता होती है कि यह एक बार कैसे काम करता है। धन्यवाद! – Hatchet

+0

कुछ विवरण जोड़ा गया। मुझे लगता है कि यह इतना सामान्य कोड है जिसे कोई भी समझ सकता है अगर जावास्क्रिप्ट और JQuery का उपयोग कर रहा है। – dsk

0

$(this).data('star-rating') यदि आप इसे एक समारोह से लौटने काम करेंगे गयी।

$('.star-rating').jRate({ 
    startColor : '#ccc', 
    endColor : '#ccc', 
    readOnly : true, 
    rating : function() { return $(this).data('star-rating'); } 
});