2011-04-27 68 views
0

我有以下如下面的代碼jQuery的最接近的TR,並找到一個元素

<form name="frm1"> 
<table id="mytable" border="1" cellspacing="2" cellpadding="2"> 
    <tr> 
     <td> 
      column1 
     </td> 
     <td> 
      column2 
     </td> 
     <td> 
      column3 
     </td> 
    </tr> 
    <tr> 
     <td> 
      ABC 
     </td> 
     <td> 
      <select name="mydd" class="mydd"> 
       <option value="ABC">ABC</option> 
       <option value="DECF">DECF</option> 
       <option value="GHHHH">GHHHH</option> 
      </select> 
     </td> 
     <td> 
      <input type="text" name="textvalue" id="textvalue" value="kljaslkjd"> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      ABC 
     </td> 
     <td> 
      <select name="mydd" class="mydd"> 
       <option value="222">222</option> 
       <option value="333">333</option> 
       <option value="444">444</option> 
      </select> 
     </td> 
     <td> 
      <input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd"> 
     </td> 
    </tr> 
</table> 
</form> 

jQuery代碼:

$(document).ready(function(){ 
    $(".mydd").change(function(){ 
     var value= $(this).closest("tr").find(".textvalue").attr("name"); 
     alert('value:' + value); 
    }); 
}); 

我所試圖做的是,當我改變下拉選項,我得到最接近的tr,然後找到一個輸入元素。第一個元素總是返回undefined。但第二個元素工作正常。可能是什麼原因?

回答

0

我建議你,你總是總是用你的HTML標籤(姓名,身份證),這兩個選項,因爲你可以有兩個元素具有相同的名稱,並在所有有沒有問題,但ID它必須是唯一的,並且ID是什麼它爲JavaScript重要的,名稱是像PHP服務器的語言很重要。

而且從正在觸發此輸入標籤,無級textvalue,所以也許這就是問題所在。

0

<input>第一行沒有class="..."
因此,.textvalue沒有找到它。

1

重複ID - 他們會每次都得到你。這可能是這個問題。其次,第一個人對於這個問題沒有正確的階級或階級。

3

第一個<input>缺少textvalue類。更改

<input type="text" name="textvalue" id="textvalue" value="kljaslkjd"> 

<input type="text" class="textvalue" name="textvalue" id="textvalue" value="kljaslkjd"> 

的標記還包含重複的ID,這是無效的HTML多種元素。因此,也請將第一個id="textvalue"更改爲id="textvalue1",將第二個更改爲id="textvalue2"