उन तत्वों का चयन करें जिन्हें मैंने पहले सेट किया है jquery.data();
यानी .data('myAttr')
पहले से सेट किए गए सभी तत्वों का चयन करें ।
उपाय
असर दिखाना चाहते एक jsfiddle है फिडल
उन तत्वों का चयन करें जिन्हें मैंने पहले सेट किया है jquery.data();
यानी .data('myAttr')
पहले से सेट किए गए सभी तत्वों का चयन करें ।
उपाय
असर दिखाना चाहते एक jsfiddle है फिडल
जवाबों:
तुम यह कर सकते थे
$('[data-myAttr!=""]');
यह उन सभी तत्वों का चयन करता है जिनके पास एक विशेषता है data-myAttr
जो '' के बराबर नहीं है (इसलिए इसे सेट किया जाना चाहिए);
आप फ़िल्टर का उपयोग भी कर सकते हैं ()
$('*').filter(function() {
return $(this).data('myAttr') !== undefined;
});
उन्हें चुनने का सबसे अच्छा और सरल तरीका है:
$('[data-myAttr]')
अधिक जानकारी:
मैंने बहुत सी चीजों का परीक्षण किया।
का उपयोग करना $('[data-myAttr!=""]')
सभी मामलों के लिए काम नहीं करता है। क्योंकि जिन तत्वों का एक data-myAttr
सेट नहीं है , उनके पास उनके data-myAttr
बराबर होगा undefined
और $('[data-myAttr!=""]')
उन लोगों का भी चयन करेगा, जो गलत है।
आप फ़िल्टर का उपयोग कर सकते हैं () :
var elements = $("*").filter(function() {
return $(this).data("myAttr") !== undefined;
});
$('[data-myAttr]')
?
data()
गेटर फॉर्म वास्तव में एचटीएमएल 5 data-
विशेषताओं को पढ़ता है , लेकिन इसका सेटर फॉर्म न तो बनाता है और न ही उन्हें अपडेट करता है।
आप इस jQuery के चयनकर्ता निष्कर्षण का उपयोग कर सकते हैं: तत्व डेटा को छोड़ना
$(':data'); // All elements with data
$(':not(:data)'); // All elements without data
आप JQuery यूआई का उपयोग : डेटा () चयनकर्ता के साथ कर सकते हैं
उन तत्वों का चयन करता है जिनके पास निर्दिष्ट कुंजी के तहत डेटा संग्रहीत है।
एक उदाहरण के लिए इस jsfiddle की जाँच करें
सभी तत्वों का मिलान करने के लिए .data('myAttr')
आप इसका उपयोग कर सकते हैं
var matches = $(':data(myAttr)');
इस के साथ दोनों तत्वों के लिए काम करना चाहिए data-
का उपयोग करके संग्रहीत विशेषताओं और डेटा के साथ तत्वों $.data()
क्योंकि
JQuery के 1.4.3 HTML 5 डेटा के रूप में - विशेषताओं को jQuery के डेटा ऑब्जेक्ट में स्वचालित रूप से खींच लिया जाएगा।
लेकिन यह बहुत अच्छी तरह से काम नहीं करता है। इस jsfiddle की जाँच करें और आप देखेंगे कि दूसरी बार चयनकर्ता को यह कहा जाता है कि इसे 2 तत्वों से मेल खाना चाहिए और केवल एक से मेल खा रहा है। यह jquery-ui पुस्तकालय में "एक बग" के कारण है।
यह कोर jquery-ui फ़ाइल से लिया गया है।
$.extend( $.expr[ ":" ], {
data: $.expr.createPseudo ?
$.expr.createPseudo(function( dataName ) {
return function( elem ) {
return !!$.data( elem, dataName );
};
}) :
// support: jQuery <1.8
function( elem, i, match ) {
return !!$.data( elem, match[ 3 ] );
}
});
जैसा कि आप देख सकते हैं कि वे $.data(elem, match)
इसके बजाय उपयोग कर रहे हैं $(elem).data(match)
जिसके कारण कैश को अपडेट नहीं किया जाना चाहिए, यदि आप data-
विशेषताओं के साथ तत्वों का अनुरोध कर रहे हैं । यदि data()
भंडारण के लिए तत्व का परीक्षण किया गया है, तो यह अच्छी तरह से काम करता है, लेकिन यदि यह परिणामी मैचों में शामिल नहीं होगा।
यह बिल्कुल भी बग नहीं हो सकता है कि आप जो चाहते हैं वह केवल आपके द्वारा निर्धारित डेटा जानकारी वाले तत्वों से मेल खाता हो, लेकिन यदि आप दो विकल्पों के साथ नहीं बचे हैं।
Jquery-ui का उपयोग न करें और अपने स्वयं के छद्म चयनकर्ता का विस्तार करें $(:mydata(myAttr))
$.extend($.expr[":"], {
mydata: $.expr.createPseudo ?
$.expr.createPseudo(function(dataName) {
return function(elem) {
return !!$(elem).data(dataName);
};
}) : function(elem, i, match) {
return !!$(elem).data(match[3]);
}
});
:data
Pseudoselector के साथ jquery-ui का उपयोग करें और [data-myAttr]
उन लोगों को शामिल करने के लिए चयन करने के परिणामों में शामिल हो सकते हैं जिन्हें छोड़ दिया जा सकता है
var matches = $(':data(myAttr)', '[data-myAttr]')
उन तत्वों का चयन करें जिन्हें मैंने पहले सेट किया हैjquery.data();
प्रश्न एक विशिष्ट कुंजी के साथ सभी तत्वों को खोजने के लिए है और किसी भी डेटा को नहीं।
उपयोग करने का प्रयास करें jQuery.data()
$(".myClass").each(function(i){
if( i % 2 == 0 ){
$(this).data("myAttr",i + 1);
}
});
var res = $(".myClass").map(function(i) {
console.log($(this).data("myAttr"));
return $.data(this, "myAttr") !== undefined ? this : null
});
console.log(res);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div class="myClass">1</div>
<div class="myClass">2</div>
<div class="myClass">3</div>
<div class="myClass">4</div>
<div class="myClass">5</div>
jsfiddle http://jsfiddle.net/xynZA/142/
html
data-*
विशेषता सेट करने वाले तत्वों को वापस करने की आवश्यकता है , साथ ही साथ jQuery.data()
सेट करें?
$('[data-myAttr]')