বৈশিষ্ট্য অনুসারে উপাদান নির্বাচন করুন


253

আমার কাছে উত্পন্ন আইডির সাথে চেকবাক্সগুলির সংকলন রয়েছে এবং এর মধ্যে কয়েকটিতে অতিরিক্ত বৈশিষ্ট্য রয়েছে। কোনও উপাদানটির একটি নির্দিষ্ট বৈশিষ্ট্য রয়েছে কিনা তা যাচাই করার জন্য কি জিকুয়ারি ব্যবহার করা সম্ভব? উদাহরণস্বরূপ, নিম্নলিখিত উপাদানটির "মায়াট্রা" বৈশিষ্ট্য আছে কিনা তা আমি যাচাই করতে পারি? বৈশিষ্ট্যের মান পৃথক হতে পারে।

<input type="checkbox" id="A" myattr="val_attr">A</input>

উদাহরণস্বরূপ, আমি কীভাবে সমস্ত চেকবাক্সগুলির সংগ্রহ পেতে পারি যার একটি করে চেক না করে এই বৈশিষ্ট্যটি রয়েছে? এটা কি সম্ভব?


2
অন্যদিকে, একটি <ইনপুট /> হ'ল একটি খালি ট্যাগ যা এর ভিতরে থাকা সামগ্রী নয়। আপনার মায়াটার উপস্থিত থাকায় আপনি বৈধতা দেখার সাথে উদ্বিগ্ন নন ...
স্কটই


আপনার যদি ইতিমধ্যে একটি সংগ্রহ থাকে এবং আপনি নির্দিষ্ট বৈশিষ্ট্যযুক্ত কেবলমাত্র উপাদানগুলিই ফিল্টার করতে চান - কেবল এটি করুন -$filtered = $collection.filter('[attribute_name]');
jave.web

উত্তর:


190

আপনার অর্থ কি আপনি সেগুলি নির্বাচন করতে পারেন? যদি তা হয় তবে হ্যাঁ:

$(":checkbox[myattr]")

4
মনে রাখবেন যে আপনি যদি অস্তিত্বের জন্য পরীক্ষা করছেন (সম্ভবত যদি একটি বিবৃতিতে উদাহরণস্বরূপ) এটি করা আরও সম্ভবত সঠিক / নির্ভরযোগ্য: যদি ($ (": চেকবক্স [মায়াট্রিক]")। দৈর্ঘ্য ()> 0) ...
রিনোগো

14
@ রিনোগো: আসলে আপনার যা দরকার তা যদি ("(": চেকবক্স [মায়াট্টার] ") দৈর্ঘ্য) হয়। () দৈর্ঘ্যের পরে প্রয়োজনীয় নয়, তবে> 0, 0 সমতা পরীক্ষায় ভুয়া মূল্যায়নও করে না যার জন্য কঠোর সমতা (মান এবং প্রকার উভয়) প্রয়োজন হয় না।
bmarti44

1
আপনি যেমন: টিডি [মায়াট্রা] কিছু চেষ্টা করলে এটি জেএস ত্রুটি ছুড়ে দেয়। সুতরাং আমি মনে করি এই বৈশিষ্ট্যটি বিশেষত চেকবক্সগুলিকে লক্ষ্যবস্তু করেছিল।
fooledbyprimes

6
কোলন সিউডো-ক্লাস নির্বাচন করে, টাইপ অ্যাটর দ্বারা নির্ধারিত। টিডিতে একই জিনিস প্রয়োগ করতে, কেবল কোলন বাদ দিন।
ধোচি

অথবা যদি আপনি দেখতে চান যে কোনও কিছুর কোনও বৈশিষ্ট্য নেই যেমন বৈশিষ্ট্য নেই এমন সমস্ত লিঙ্কগুলি সন্ধান করুন href$("#myBox").find('a').filter(':not([href])')
টিম্বব্রাউন

368
if ($('#A').attr('myattr')) {
    // attribute exists
} else {
    // attribute does not exist
}

সম্পাদনা করুন:

উপরের মধ্যে পড়ে যাবে elseউপরেরগুলি myattrউপস্থিত থাকলে ব্রাঙ্কে তবে এটি একটি খালি স্ট্রিং বা "0"। যদি সমস্যা হয় তবে আপনার স্পষ্টভাবে পরীক্ষা করা উচিত undefined:

if ($('#A').attr('myattr') !== undefined) {
    // attribute exists
} else {
    // attribute does not exist
}

3
দুর্দান্ত উত্তর নয়। "অপরিজ্ঞাত" জাভাস্ক্রিপ্টে কোনও কীওয়ার্ড নয়। Constc.blogspot.com/2008/07/…
mhenry1384

16
আপনি ঠিক বলেছেন ... তবে পুনঃনির্ধারণকে undefinedএকটি প্রান্তের কেস হিসাবে বিবেচনা করা হয় এবং উপরের তুলনাটি 99% ক্ষেত্রে কাজ করবে।
স্টিফান গেহরিগ

6
বৈশিষ্ট্যের খালি স্ট্রিং থাকলে কাজ করে না work একটি উদাহরণ myattr হয় = ''
mythicalprogrammer

3
@ মেন্রি - তাহলে আপনি ত্রুটিতে থাকবেন :) আপনি যদি আমার জন্য বা আমার পাশে এই প্রকল্পটি তৈরি করছিলেন তবে আমার আপনার ত্রুটিটি ঠিক করা দরকার। যদি এটি একটি ওপেন সোর্স প্যাকেজ হত তবে আমি (অনেক ব্যবহারকারীদের সাথে) এটি খারাপভাবে কোড করা হয়নি তার ভিত্তিতে এটি ব্যবহার বন্ধ করে দেব। আপনি যদি এটি পরিবর্তন না করেন তবে অবশেষে অন্য কেউ ত্রুটি ছাড়াই সংস্করণ তৈরি করবে এবং এর পরিবর্তে লোকেরা এটি ব্যবহার করবে এবং আপনি নিজের প্রকল্পটি হারাতে চাইবেন, যেমন কেউ প্যাকেজ তৈরি করার আগে অনেকবার ঘটেছিল যা এর সাথে ভাল ধারণা idea দুর্বল বাস্তবায়ন। যেভাবেই এটি আপনাকে কোডিং অনুশীলন সম্পর্কে একটি পাঠ শেখায় :)
জিম্বো জনি

8
if (typof $ ('# A')। attr ('myattr')! == 'অপরিজ্ঞাত')
জেমস ওয়েস্টগেট

166

আমি জানি যে প্রশ্নটি জিজ্ঞাসা করার পরে অনেক দিন হয়েছে, তবে আমি চেকটি আরও পরিষ্কারভাবে দেখতে পেয়েছি:

if ($("#A").is('[myattr]')) {
    // attribute exists
} else {
    // attribute does not exist
}

( এখানে এই সাইটে পাওয়া যায় )

নথিপত্র সম্পর্কে হয় খুঁজে পাওয়া যেতে পারে এখানে


ডাব্লু 3 সি অনুসারে, বুলিয়ান বৈশিষ্ট্যগুলি বৈশিষ্ট্যের উপস্থিতি বা অনুপস্থিতির দ্বারা সংজ্ঞায়িত করা হয়। jQuery বৈশিষ্ট্য মানগুলিকে ম্যানিপুলেট করার জন্য পদ্ধতি .attr () সরবরাহ করে। তবে কীভাবে আমরা মূল্য ছাড়াই একটি বৈশিষ্ট্য যুক্ত করব? কোনও বৈশিষ্ট্যের উপস্থিতি পরীক্ষা করার জন্য আপনি যে পদ্ধতিটি সরবরাহ করেন তা jQuery ডকুমেন্টেশনে বর্ণিত হয়নি (1.8.2)। আপনি কি জানেন যে কীভাবে jQuery এর সাথে একটি বৈশিষ্ট্য যুক্ত করতে হয়?
chmike

@chmike একটি বৈশিষ্ট্য যুক্ত করতে, আমি এটি এইভাবে করব: $ ("# এ") prop আপনি কিছুটা মূল্য দিতে পারেন আপনার পছন্দের যে কোনও মান: স্ট্রিং, সংখ্যা, খালি স্ট্রিং, সত্য / মিথ্যা।
জোনাথন বার্গারন

এটি একটি নির্ধারিত মানের সাথে অ্যাট্রিবিউট যুক্ত করবে যা মান ব্যতীত কোনও গুণকের মতো নয় as
chmike

5
আমি সম্মত, এটি সেরা উত্তর (jQuery ব্যবহার করে) - খুব পরিষ্কার এবং সংক্ষিপ্ত। আমি নিজেকে ভাবছিলাম যে কেন jQuery এর কেবল একটি hasAttribute () ফাংশন নেই, এবং উত্তরটি হ'ল যে নেটিভ জাভাস্ক্রিপ্টটির ইতিমধ্যে একটি রয়েছে। যে কোনও এইচটিএমএল ডোম উপাদানটির একটি পদ্ধতি রয়েছেঅ্যাট্রিবিউট ('অ্যাট্রিবিউটনেম')। সুতরাং আপনি এটি করতে পারেন: $ ('# এ') [0] .অ্যাসট্রিবিউট ('মায়াটার') @ চিমিক - আমার মনে হয় না যে আপনি jQuery ফাংশন ব্যবহার করে একটি খালি বৈশিষ্ট্য যুক্ত করতে পারেন, তবে আপনি এটি HTML ডম উপাদান দিয়ে করতে পারেন নিম্নরূপ হিসাবে একই উপায়ে অবজেক্ট: $ ("# এ") [0] .setAttributeNode (ডকুমেন্ট.ক্রেটআট্রিবিউট ("আমারনিউট্রিবিউট"));
ড্যানিয়েল হাওয়ার্ড

1
আমি এই উত্তরটি পছন্দ করি কেবল একটি মন্তব্য, তবে কোনও মূল্য ছাড়াই কীভাবে একটি বৈশিষ্ট্য যুক্ত করা যায় সে সম্পর্কে মন্তব্য সম্পর্কে বিভ্রান্ত হয়েছিল। এগুলি প্রশ্ন বা উত্তরের সাথে সম্পর্কিত নয়।
goodeye

9

এটি কাজ করবে:

$('#A')[0].hasAttribute('myattr');

2
: লিঙ্ক দেখতে stackoverflow.com/questions/1318076/...
RetroCoder

@ রেট্রো কোডার, আপনার লিঙ্কটি সম্পর্কে আপনার বক্তব্য কী? এই পরীক্ষাটি বেশ ভাল বলে মনে হচ্ছে, বিশেষত কারণ আপনি $(this).<something>যখন এখানে this.hasAttribute('...')সরাসরি ব্যবহার করতে পারেন তখন আপনি ব্যবহার করেন (অবশ্যই পুরানো ব্রাউজারগুলির যত্ন
নেবেন না

8

জাভাস্ক্রিপ্টে, ...

null == undefined

... রিটার্ন true*। এটা তোলে পার্থক্য ==এবং ===। এছাড়াও, নামটি undefinedসংজ্ঞায়িত করা যেতে পারে (এটি কোনও মূলশব্দ নয় null) সুতরাং অন্য কোনও উপায়ে পরীক্ষা করা ভাল। সবচেয়ে নির্ভরযোগ্য উপায়টি সম্ভবত typeofঅপারেটরের রিটার্ন মানটির তুলনা করা ।

typeof o == "undefined"

তবুও, নাল তুলনা করা এই ক্ষেত্রে কাজ করা উচিত।

* ধরে undefinedনেওয়া বাস্তবে অপরিজ্ঞাত।


অপরিবর্তিত জাভাস্ক্রিপ্টে কোনও সংরক্ষিত কীওয়ার্ড নয়। JQuery এ এটির নাম ঠিকঠাক করা সম্ভব কারণ এটি "var" ঠিকাদারের সাথে নির্মিত এবং মূল্যবান নয়। ম্যাজিক লাইব্রেরি কোডের শীর্ষে, প্রকৃতপক্ষে, একটি লাইন রয়েছে যা "ভার অপরিজ্ঞাত;" এবং এইভাবে একটি অনির্ধারিত ভেরিয়েবলটি jQuery স্কোপটিতে সেই নামের সাথে সংজ্ঞায়িত করা হয়েছে ... তবে এটি সমস্ত "var নামবিহীন" টাইপ করে "নামবিহীন" নামকরণ করা যেতে পারে;
ইমানুয়েল দেল গ্র্যান্ডে

1
এটি কোনও বৈশিষ্ট্যের জন্য যাচাই করে না, একটি জাভাস্ক্রিপ্ট অবজেক্টের কোনও সম্পত্তিটির জন্য এই পরীক্ষা করে কেন এটিতে 6 টি আপভোট রয়েছে?
ncubica

5

$("input[attr]").length একটি ভাল বিকল্প হতে পারে।


4

"টাইপফ", জকিউয়ারি ".আইস" এবং ".ফিল্টার" ব্যবহার করে বেশ কয়েকটি ধারণা ছড়িয়ে পড়েছিল তাই আমি ভেবেছিলাম যে এগুলির একটি দ্রুত পারফেক্ট তুলনা পোস্ট করব। টাইপফটি এটির পক্ষে সেরা পছন্দ বলে মনে হয়। অন্যরা কাজ করার সময়, এই প্রচেষ্টাটির জন্য জেকিউ লাইব্রেরিটি চাওয়ার সময় একটি পরিষ্কার পারফরম্যান্সের পার্থক্য দেখা যায়।


2
if (!$("#element").attr('my_attr')){
  //return false
  //attribute doesn't exists
}

1
এটি সম্ভবত কাজ করবে না, যেহেতু আপনি কোনও মূল্য ছাড়াই একটি বৈশিষ্ট্য যুক্ত করতে পারেন। এই ক্ষেত্রে, এই শর্তটি অতিক্রম করবে, যদিও কাঙ্ক্ষিত আচরণটি সত্য হতে পারে, বৈশিষ্ট্যটি সেট করা আছে। পিএইচপিগুলির অনুরূপ isset()বা উদাহরণস্বরূপ $("#element").attr('my_attr') === false
জেএস-এ

2

এই পোস্টে যেমন ব্যবহার করে .isএবং বৈশিষ্ট্য নির্বাচনকারী হিসাবে []আপনি সহজেই একটি ফাংশন (বা প্রোটোটাইপ) যুক্ত করতে পারেন:

function hasAttr($sel,attr) {
    return $sel.is('['+attr+']');
}

1
$("input#A").attr("myattr") == null

1
example ()। অ্যাটর () আমাদের উদাহরণ অনুসারে পরামর্শ অনুসারে নਾਲ ফিরে আসবে না, পরিবর্তে এটি অপরিবর্তিত ফিরে আসবে।
স্টিফান গেহরিগ

ফায়ারবগে আমার জন্য কাজ করে তবে এটি ফায়ারব্যাগের জিনিস হতে পারে
ম্যাথিয়াস এফ

এটি চেষ্টা করে দেখেনি
স্টিফান

1

কেবল:

$('input[name*="value"]')

আরও তথ্য: অফিসিয়াল ডক্স


1
স্টাইলের মধ্যে আনসকেপড ডাবল কোটগুলি ডাবল কোট দিয়ে সংজ্ঞায়িত করা, কোনও বৈধ স্ট্রিং নয়। দুর্ভাগ্যক্রমে আমি এটি আপনার জন্য সম্পাদনা করতে পারছি না কারণ একটি সম্পাদনাতে characters টি অক্ষর বা তারও বেশি পরিবর্তন করতে হবে, যদিও পরিবর্তিত হওয়া দরকার।
জিম্বো জনি

0

কোনও বৈশিষ্ট্যযুক্ত সমস্ত উপাদান বাছাই করা ছাড়াও $('[someAttribute]')বা $('input[someAttribute]')কোনও হ্যান্ডলারের মতো কোনও বস্তুর উপরে বুলিয়ান চেক করার জন্য আপনি কোনও ফাংশনও ব্যবহার করতে পারেন:

if(! this.hasAttribute('myattr') ) { ...


0

আমি উপরে বর্ণিত বর্ণিত আচরণ হিসাবে এনপিএম প্যাকেজ তৈরি করেছি।

লিঙ্ক করুন [npm] এবং [GitHub]

ব্যবহার খুব সহজ। উদাহরণ স্বরূপ:

<p id="test" class="test">something</p>
$("#test").hasAttr("class")

সত্য ফিরে।

উটকেলেস নিয়েও কাজ করে।


0

নির্দিষ্ট বৈশিষ্ট্যযুক্ত উপাদান নির্বাচন করতে উপরের উত্তরগুলি দেখুন।

প্রদত্ত jQuery উপাদানটির একটি নির্দিষ্ট বৈশিষ্ট্য রয়েছে কিনা তা নির্ধারণ করতে আমি একটি ছোট প্লাগইন ব্যবহার করছি যা trueযদি অ্যাজকোয়ারি সংগ্রহের প্রথম উপাদানটিতে এই বৈশিষ্ট্যটি উপস্থিত থাকে তবে ফিরে আসে :

/** hasAttr
 ** helper plugin returning boolean if the first element of the collection has a certain attribute
 **/
$.fn.hasAttr = function(attr) {
   return 0 < this.length
       && 'undefined' !== typeof attr
       && undefined !== attr
       && this[0].hasAttribute(attr)
}

-5

JQuery স্ট্রিং হিসাবে বৈশিষ্ট্যটি ফিরিয়ে দেবে। সুতরাং সেট করা আছে কিনা তা নির্ধারণ করতে আপনি সেই স্ট্রিংয়ের দৈর্ঘ্য পরীক্ষা করতে পারেন:

if ($("input#A").attr("myattr").length == 0)
 return null;
else
 return $("input#A").attr("myattr");

সুতরাং, আমি জানি এটি এক বছরের বেশি সময় পেরিয়ে গেছে এবং আমার এটি অনেক আগেই সম্বোধন করা উচিত ছিল। আমি জানতে আগ্রহী যে কোন অংশটি কাজ করে না? যদি আমি জানতাম আপনি কেবল তাদের নির্বাচন করার চেষ্টা করছেন আমি উপরের কোডটি না দিতাম। আমি ভেবেছিলাম আপনি পৃথকভাবে এগুলি পরীক্ষা করতে চান। জিকিউরি প্রকৃতপক্ষে বৈশিষ্ট্যটিকে স্ট্রিং হিসাবে ফিরিয়ে দেয় এবং আপনি অন্য স্ট্রিংয়ের মতো সেই স্ট্রিংয়ের দৈর্ঘ্যও পরীক্ষা করতে পারেন। সুতরাং যতক্ষণ না আপনার নির্বাচক এবং গুণাবলী সঠিক ছিল আপনি কোনও নির্দিষ্ট ইনপুটটিতে সেই বৈশিষ্ট্যটি রয়েছে কিনা তা পরীক্ষা করে দেখতে সক্ষম হওয়া উচিত। যাইহোক, আমি ঠিক চাইনি লোকেরা নীতিটি ছাড় দেয় কারণ এটি কাজ করে।
Zach

6
এটা ক্ষেত্রে ব্যর্থ হবে যেখানে অ্যাট্রিবিউট রিটার্ন একটি স্ট্রিং বদলে undefined এবং undefined.length ব্যর্থ হবে যে ক্ষেত্রে $ ( "ইনপুট # একটি") ATTR ( "myattr") মধ্যে উপস্থিত নেই।
জাদুঅক্ষর ফাঃ

সামগ্রীতে একটি খালি বৈশিষ্ট্য বনাম একটি সনাক্ত করে, অ-বিদ্যমান বৈশিষ্ট্যে ব্যর্থ। মূল প্রশ্নটি ছিল গুণটির অস্তিত্ব সনাক্তকরণ সম্পর্কে, প্রশ্নের উত্তর হিসাবে এটি একটি ব্যর্থতা তৈরি করে।
জিম্বো জনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.