2011-10-10 85 views
1

我對.find()方法有一個奇怪的問題。jquery .find()方法的奇怪問題

我有以下的html:

<table id="roleTab" style="padding: 5px; position: relative; top: 10px"> 
<thead> 
    .... 
</thead> 
<tbody> 
<TMPL_LOOP DATA_ROLES> 
    <tr id="<TMPL_VAR ID>"> 
     <td><select id="role2" name="role2_<TMPL_VAR ID>" title="The role of the employee"><TMPL_VAR ROLE></select></td> 
     <td><input id="steps" type="text" name="steps_<TMPL_VAR ID>" size="5" title="Total amount of steps per month" value="<TMPL_VAR STEP>"></td> 
     <td><input id="measurable_steps" type="text" name="measurable_steps_<TMPL_VAR ID>" title="Measurable steps" value="<TMPL_VAR MEASURABLE_STEP>"></td> 
     <td><input id="steps_ratio" type="text" name="steps_ratio_<TMPL_VAR ID>" title="'Measurable steps'/'Steps'" value="<TMPL_VAR STEPS_RATIO>%" readonly></td> 
     <td style="text-align: center"><select id="reopen_rate" name="reopen_rate_<TMPL_VAR ID>" title="How many reopenes after closing the SI"><TMPL_VAR REOPEN></select></td> 
     <td><select id="w4p" name="w4p_<TMPL_VAR ID>"><TMPL_VAR W4P></select></td> 
     <td><select id="team" name="team2_<TMPL_VAR ID>"><TMPL_VAR TEAM></select></td> 
     <td><input id="checkbox" type=checkbox></td> 
     <td><input id="status2" type="hidden" name="status2_<TMPL_VAR ID>" value="<TMPL_VAR STATUS>"></td> 
    </tr> 
</TMPL_LOOP> 
</tbody> 
</table> 

我有以下腳本:

$(function(){ 
    $('#steps').live("focusout", function() { 
     var steps = $(this).parents().parents().find('#steps').attr("value"); 
     var meas_steps = $(this).parents().parents().find('#measurable_steps').attr("value"); 
     var value = (meas_steps/steps)*100; 
     value = parseInt(value); 
     if(steps && meas_steps){ 
      var t = $(this).parents().parents().attr("id");//////////////////// 
      alert(t);//////////////////////////////////////////////////////////// 
      $(this).parents().parents().find('#steps_ratio').attr("value", value+"%"); 
     } 
    }); 
}); 

我在網頁上有兩行(以下循環)。 首先有id'2',第二個有id'3'。

問題是,當我更改第二行(也可以是第一行)的步驟字段,然後聚焦,則警報顯示'3',但'steps_ratio'字段中的值已更改爲兩行。

爲什麼它不會僅僅改變id爲'3'的'steps_ratio'?

感謝

回答

1
$(this).parents().parents() 

應該

$(this).parent().parent() 

.parents()返回所有父元素一路上漲樹,.parent()只返回直接父。

此外,您不應在頁面中具有相同ID的多個元素。

+0

非常感謝!有用! – Mike