আমি পূর্বে সেট করে রেখেছি এমন উপাদান নির্বাচন করুন jquery.data();
.data('myAttr')
ইতোমধ্যে সেট করা সমস্ত উপাদান নির্বাচন করুন ।
সমাধান
ডিস্টোস্ট্রেট করার জন্য একটি জিসফ্লাল হলেন ফিডল
আমি পূর্বে সেট করে রেখেছি এমন উপাদান নির্বাচন করুন jquery.data();
.data('myAttr')
ইতোমধ্যে সেট করা সমস্ত উপাদান নির্বাচন করুন ।
সমাধান
ডিস্টোস্ট্রেট করার জন্য একটি জিসফ্লাল হলেন ফিডল
উত্তর:
আপনি করতে পারেন
$('[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 UI ব্যবহার করতে পারেন : ডেটা () নির্বাচকের সাথে
নির্দিষ্ট কীগুলির অধীনে ডেটা সঞ্চিত উপাদান নির্বাচন করে।
একটি উদাহরণের জন্য এই jsfiddle দেখুন
সমস্ত উপাদান মেলে পেতে .data('myAttr')
আপনি ব্যবহার করতে পারেন
var matches = $(':data(myAttr)');
এটি data-
বৈশিষ্ট্যযুক্ত উপাদান এবং উপাদানগুলি সংরক্ষণ করে ডেটা ব্যবহার করে $.data()
কারণ উভয়ের জন্য কাজ করা উচিত
JQuery 1.4.3 হিসাবে এইচটিএমএল 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
সিউডোজেক্টর সহ 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>
জেএসফিল http://jsfiddle.net/xynZA/142/
html
data-*
বৈশিষ্ট্য সেট, পাশাপাশি সেট থাকা উপাদানগুলি কী ফেরত দেওয়া দরকার jQuery.data()
?
$('[data-myAttr]')