2013-07-31 4 views
1

У меня есть HTML как это:найти свойство JQuery элемента

<div class="icheckbox_flat-aero checked" style="position: relative;"> 
    <input type="checkbox" class="icheck" id="Checkbox9" name="userAccessNeeded" target="Checkbox6" style="position: absolute; opacity: 0;"> 
    <ins class="iCheck-helper" style="position: absolute; top: 0%; left: 0%; display: block; width: 100%; height: 100%; margin: 0px; padding: 0px; background-color: rgb(255, 255, 255); border: 0px; opacity: 0; background-position: initial initial; background-repeat: initial initial;"></ins> 
</div> 

Это мой JavaScript:

$('.iCheck-helper').click(function() { // the element I clicked on 
    var parent = $(this).parent(); // gets the div element 
    var classNames = parent.find($("input")).prop("target"); // gets the input elements target 
    alert(classNames); 
}); 

Он должен работать, но это предупредит не определено. Что я делаю не так?

+1

'parent.find ($ (" input "))' должен быть 'parent.find (" input ")' или просто '$ (this) .prev();' –

ответ

1

это должно исправить:

$('.iCheck-helper').click(function() { 
    var parent = $(this).parent(); 
    var classNames = parent.find("input").attr("target"); 
    alert(classNames); 
}); 

изменил

parent.find($("input")).prop("target"); 

в

parent.find("input").attr("target"); 

Вот демо: http://jsbin.com/evafub/1/edit

+0

Не могли бы вы объяснить, почему это исправить? – brbcoding

+0

Есть несколько причин. Это может быть так же просто, как использовать версию jquery. – azzy81

+0

Нет такого свойства (или атрибута в стандарте HTML5) как 'target' на элементе' input'. –

2

Вы должны использовать .attr() здесь, потому что, target является атрибутом здесь

var classNames = parent.find("input").attr("target"); 

или

var classNames = $(this).prev().attr("target"); 
+1

Вы также можете избежать использования родительского используя '$ (this) .siblings ('input.icheck'). attr ('target');' вместо – Derek

+1

Входной тег @tymeJV является самозакрывающимся элементом –

+0

Всегда думал, что вам действительно нужно иметь '/>' на конец, по-видимому, нет. Игнорируй меня! – tymeJV

3

Это происходит потому, что нет такого свойства имени target в DOM interface of the input element.

input элементы не имеют атрибут target, только formtarget (и то же самое есть это formTarget свойство). Я не уверен, что цель вашей «мишень» в вашем коде, но formTarget является ссылкой на идентификатор формы:

Целевые и formtarget содержимого атрибутов, если указано, должны иметь значение которые являются действительными именами контекста просмотра или ключевыми словами.

Цель target элемента - это значение атрибута formtarget элемента, если элемент является кнопкой отправки и имеет такой атрибут; или значение целевого атрибута владельца формы, если оно имеет такой атрибут; или, если Документ содержит базовый элемент с целевым атрибутом, то значение целевого атрибута первого такого базового элемента; или, если нет такого элемента, пустая строка.

Если «цель» для другой цели, использовать data-* attribute для хранения значения (т.е. data-target="Checkbox6").