2012-02-24 27 views
0

我有一個函數在這裏找到父(李)的兄弟(答案)然後計數子輸入。如何選擇一個老版本的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

這就是你輸入框的長度..你究竟想要做什麼 – 2012-02-24 20:10:12

+0

順便說一下,有多個元素具有相同的ID有點不對。 – raina77ow 2012-02-24 20:12:24

+0

這段代碼很長,並且需要大量的JQuery來查找如此接近的輸入。我認爲我在JQuery中缺少一些東西來將它縮短爲像.parent('li#answerFields')這樣的命令。抱歉,那是一個錯字 – user1082764 2012-02-24 20:14:16

回答

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必須是唯一的,並且通過代碼的外觀,您的頁面具有重複的ID。

.parents("li")應該是.closest("li"),除非您實際上想要選擇所有祖先元素,而不是僅僅最接近的元素li

爲了使這個代碼正確,而不需要你做出ID的獨特的,你可以這樣做:

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

至於使它更小,也就是約小,因爲它會變得。

使用.live()對一個ID的元素看起來很奇怪。只有一個包含該ID的有效元素,爲什麼不在創建時綁定到該元素?