2014-09-13 2 views
0

По какой-то причине JQuery не возвращает объекты в этой функции. Понятия не имею почему. Часть того, что делает это настолько разочаровывающим, состоит в том, что у меня есть совершенно отдельная функция чуть ниже нее, которая отлично работает и использует тот же самый синтаксис, но вместо этого возвращает объект, как ожидалось. Для этой функции я не подвожу ничего, кроме проблем :(JQuery не вернет объект (Drupal)

Drupal.behaviors.nutriListen = { 
attach: function() { 

    $('input.form-autocomplete').on('blur', function() { 

     console.log(this); 
     console.log($('input.form-autocomplete').attr()); 

     var id = $('input.form-item-recipe-ingredients-quantity').id; 
     console.log(id); 

    } 

    ); 

    } 
} 

На лог возвращаемой информации является HTML-элемент.

<input id="edit-recipe-ingredients-ing-0-name" class="form-item-recipe- ingredients-name form-text form-autocomplete" type="text" data-thmr="thmr_132" maxlength="128" size="25" value="" name="recipe_ingredients[ing][0][name]" autocomplete="OFF" aria-autocomplete="list"> 

В $(). Атр нарушается, происходит сбой JQuery, и . $() ID неопределен Любые идеи относительно того, что происходит на

+0

Если у вас есть сомнения, проверьте API jQuery. Сэкономли бы себе поездку сюда. http://api.jquery.com/ – charlietfl

ответ

0

Я думаю, что ваш ищет:.?

$('input.form-autocomplete').attr("id"); 

Вам нужно сообщить функции attr(), какой атрибут вы ищете. $(...).id не работает, потому что $(...) возвращает выбор jQuery (массив узлов), вы можете использовать $(...)[0].id. Кроме того, если console.log(this) работает, то вы можете просто сделать:

id = $(this).attr("id"); 
console.log(id); 

Надеется, что это работает для вас.

+0

Последняя часть неверна ... 'this' внутри обработчиков событий jQuery является встроенным элементом DOM и должен быть обернут в' $() 'для использования методов jQuery. Я думаю, вы имели в виду 'this.id' – charlietfl

+0

Спасибо за помощь, это отлично сработало – user3210277

Смежные вопросы