2012-02-24 3 views
0

У меня есть функция, которая находит родной (родительский) ответ (parentfields) родителя (li), а затем подсчитывает дочерние входы.Как выбрать родителя в старой версии JQuery

$('#addAnswer').live('click', function(){ 
    var selected = $(this).parents('li').siblings('#answerFields').children('input').length; 
    document.getElementById('legend').innerHTML = selected; 
}); 

Как я могу сократить это, используя JQuery 1.5.2?

У меня есть рабочий JSFiddle.

+0

это будет длина полей ввода. Что именно вы пытаетесь сделать? –

+0

Немного неправильно иметь более одного элемента с одним и тем же идентификатором, между прочим. – raina77ow

+0

этот код очень длинный и требует много JQuery, чтобы найти входные данные, которые так близки. Я бы подумал, что в JQuery есть что-то, что мне не хватает, чтобы сократить это до одной команды, например, .parent ('li # answerFields'). и извините, это была опечатка – user1082764

ответ

0

Единственное утверждение, которое кажется уместным для «сокращения», - document.getElementById ('legend'). InnerHTML = selected;

который вы можете написать в JQuery, как

$('legend').html(selected); 

Обратите внимание, что «живут» устарела в версии 1.7.

0

Id должен быть уникальным, и поэтому, если есть один элемент #answerFields, вы можете напрямую использовать

$("#answerFields input").length

вместо

$(this).parents('li').siblings('#answerFields').children('input').length;

0

Там просто так много плохого здесь я Не знаю, с чего начать.

ID должен быть уникальным, и по внешнему виду вашего кода на вашей странице есть дубликаты идентификаторов.

.parents("li") должно быть .closest("li"), если вы действительно не хотите выбирать все элементы-предки, которые являются элементами li, а не только ближайшими.

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

$(this).closest("li").siblings('[id="answerFields"]').children('input').length; 

Насколько делает его меньше, то есть о том, как малые, как это собирается получить ,

используя .live() Элемент с идентификатором кажется странным. Есть только один действительный элемент, содержащий этот id, почему бы просто не привязать его к тому элементу, когда он был создан?

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