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

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>

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

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

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

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

Ваш Ответ

6   ответов
13

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

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

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

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

jsFiddle demo

Это также хороший ответ, который дает ответ на вопрос, но не обязательно спрашивает
12

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();

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

описательная альтернатива:if(this.id && this.id.length > $somenum)
+1 за лучший ответ
-2
var $this = $(this);
if (typeof $this.attr("id") != "undefined" && $t,his.attr("id").length > 0) {
    ...
}

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

1
if(typeof $(this).attr("id") != 'undefined')
Что, еслиid=""?
3

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');
       }
    });​
2

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

if($(this).attr("id"))

Похожие вопросы