Как проверить, есть ли у div идентификатор или нет?

<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>

Я пытаюсь перебрать класс, но проблема в том, что у меня есть идентификаторы card1 и card2 на этой странице. но приведенный выше код, кажется, работает, но показывает ниже ошибку.

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

Я пытаюсь получить идентификаторы из цикла, которые там.

 vol7ron21 июн. 2012 г., 14:44
JQuery - странный парадокс. Он создан, чтобы упростить программирование на JavaScript, что отлично подходит для начинающих; тем не менее, это все еще JS, и поэтому пользователь должен сначала ознакомиться хотя бы с родным взаимодействием объектов JavaScript (вызовы свойств / методов)
 vol7ron21 июн. 2012 г., 13:45
Я надеюсь, что это не звучит грубо, но я думаю, что вы должны узнать больше о JavaScript, прежде чем перейти к jQuery

Ответы на вопрос(6)

if(this.id) это все, что тебе нужно.

Why will this work?

Если элемент имеет идентификатор, значение будет непустой строкой, которая всегда оценивается какtrue.
Если у него нет идентификатора, значение представляет собой пустую строку, которая оценивается какfalse.

I am trying to get ids from the loop which are there.

Чтобы получить список идентификаторов, вы можете использовать.map вот так:

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

или используйте селекторРоко предлагает в своем ответе.

 21 июн. 2012 г., 13:46
+1 за лучший ответ
 21 июн. 2012 г., 13:47
описательная альтернатива:if(this.id && this.id.length > $somenum)

Если нетid атрибутattr метод вернетсяundefined, Просто пиши:

if($(this).attr("id"))
if(typeof $(this).attr("id") != 'undefined')
 21 июн. 2012 г., 13:50
Что, еслиid=""?

demo http://jsfiddle.net/QRv6d/13/

APi ссылка:http://api.jquery.com/prop/

Пожалуйста, попробуйте это, это должно помочь

code

   $(".ui-droppable").each(function () { 

       if($(this).prop("id").length > 0)
       {
       alert('here');
       }
    });​
Решение Вопроса

использованиеattribute selector selector[attribute] чтобы получить только элементы, которые имеют идентификатор

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

В твоем случае:

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

jsFiddle demo

 21 июн. 2012 г., 14:45
Это также хороший ответ, который дает ответ на вопрос, но не обязательно спрашивает
var $this = $(this);
if (typeof $this.attr("id") != "undefined" && $t,his.attr("id").length > 0) {
    ...
}

Если вы собираетесь использовать$(this) более одного раза рекомендуется найти его один раз и поместить полученный объект jQuery в локальную переменную.

Ваш ответ на вопрос