2012-06-21 6 views
7
<div id="cardSlots"> 
<div class="ui-droppable" tabindex="-1" id="card1">one</div> 
<div class="ui-droppable" tabindex="-1" id="card2">two</div> 
<div class="ui-droppable" tabindex="-1">three</div> 
<div class="ui-droppable" tabindex="-1">four</div> 
</div> 

<script> 
    $(".ui-droppable").each(function() {  
     if($(this).attr("id").length>0) 
     { 
     alert('here'); 
     } 
    }); 
</script> 

मैं कक्षा के माध्यम से लूप करने की कोशिश कर रहा हूं लेकिन मुद्दा यह है कि मेरे पास कार्ड 1 और कार्ड 2 आईडी उस पृष्ठ में डुप्लिकेट हैं। लेकिन उपरोक्त कोड काम करने लगता है लेकिन नीचे त्रुटि दिखा रहा है।यह जांचने के लिए कि क्या div की आईडी है या नहीं?

Uncaught Type Error: Cannot read property 'length' of undefined 

मैं वहां लूप से आईडी प्राप्त करने की कोशिश कर रहा हूं।

+0

मैं यह नहीं करता है आशा ध्वनि कठोर, लेकिन मुझे लगता है कि आपको मोर सीखना चाहिए ई जावास्क्रिप्ट के बारे में, आप jQuery – vol7ron

+0

में कूदने से पहले jQuery एक अजीब विरोधाभास है।यह प्रोग्रामिंग जावास्क्रिप्ट को आसान बनाने के लिए स्थापित है, जो शुरुआती लोगों के लिए बहुत अच्छा बनाता है; हालांकि, यह अभी भी जेएस है और इसलिए उपयोगकर्ता को कम से कम देशी जावास्क्रिप्ट ऑब्जेक्ट इंटरैक्शन (गुण/विधि कॉल) – vol7ron

उत्तर

13

उपयोग विशेषता चयनकर्ताselector[attribute] केवल तत्वों आपके मामले में एक आईडी

$('.myClass[id]') // Get .myClass elements that have ID attribute 

है कि प्राप्त करने के लिए:

$('.ui-droppable[id]').each(function(){ 
    alert(this.id); 
}); 

jsFiddle demo

+2

यह भी एक अच्छा जवाब है, जो कि प्रश्न के लिए क्या देख रहा था, लेकिन यह आवश्यक नहीं है कि – vol7ron

2

यदि id विशेषता attr विधि undefined वापस आ जाएगी। बस लिखें:

if($(this).attr("id")) 
-2
var $this = $(this); 
if (typeof $this.attr("id") != "undefined" && $this.attr("id").length > 0) { 
    ... 
} 

आप एक बार से अधिक $(this) उपयोग करने के लिए जा रहे हैं, यह यह एक बार मिल जाए, और एक स्थानीय चर में जिसके परिणामस्वरूप jQuery वस्तु डाल करने की सलाह दी है।

12

if(this.id) मदद करनी चाहिए आप सभी की जरूरत है।


यह क्यों काम करेगा?

यदि तत्व के पास आईडी है, तो मान एक गैर-खाली स्ट्रिंग होगा, जो हमेशा true का मूल्यांकन करता है।
यदि उसके पास आईडी नहीं है, तो मान एक खाली स्ट्रिंग है जो false का मूल्यांकन करता है।


मैं पाश जो देखते हैं से आईडी प्राप्त करने की कोशिश कर रहा हूँ।

आईडी की सूची पाने के लिए आपको इतना तरह .map उपयोग कर सकते हैं:

var ids = $(".ui-droppable").map(function() {  
    return this.id ? this.id : null; 
}).get(); 

या चयनकर्ता Roko suggests in his answer का उपयोग करें।

+0

+1 से सबसे पहले उत्तर – vol7ron

+0

वर्णनात्मक विकल्प के लिए परिचित होना चाहिए: 'if (this.id && this.id.length > $ somenum) ' – vol7ron

1
if(typeof $(this).attr("id") != 'undefined') 
+1

क्या होगा यदि' id = "" '? –

संबंधित मुद्दे

 संबंधित मुद्दे