2012-09-27 93 views
0

爲什麼只觸發第一個按鈕onclick?我2人不會觸發任何事件,當我在控制檯中點擊它們,也沒有錯誤 我有:jquery按鈕單擊觸發器只能用第一個按鈕工作

<script> 
$(document).ready(function(){ 

      var name_of_sender =""; 
      var text_of_sender =""; 

      var $dialog = $('<div></div>') 
      .html('This dialog will show every time!') 
      .dialog({ 
       autoOpen: false, 
       title: 'Basic Dialog' 
      }); 



      $("#edit_text").click(function() { 

       var butName = $(this).attr("name"); 
       var user_id = butName.split("_")[1]; 
       alert(user_id); 
       name_of_sender = $('#username_'+user_id).html(); 
       text_of_sender = $('#text_'+user_id).html(); 

       alert(name_of_sender); 
       alert(text_of_sender); 

       $dialog.dialog('open'); 
       // prevent the default action, e.g., following a link 
       return false; 
      }); 
}); 
</script> 
<table> 
<tbody> 
<tr> 
    <td id="username_33">test</td> 
    <td id="text_33">asdasdasd</td> 
    <td>2012-09-27</td> 
    <td>217.xx.xx.6</td> 
    <td> 
    <button id="edit_text" name="id_33">Edit</button> 
    </td> 
</tr> 
<tr> 
    <td id="username_34">test</td> 
    <td id="text_34">asdasdasd</td> 
    <td>2012-09-27</td> 
    <td>217.xx.xx.6</td> 
    <td> 
    <button id="edit_text" name="id_34">Edit</button> 
    </td> 
</tr> 
<tr> 
    <td id="username_35">test</td> 
    <td id="text_34">asdasdasd</td> 
    <td>2012-09-27</td> 
    <td>217.xx.xx.6</td> 
    <td> 
    <button id="edit_text" name="id_35">Edit</button> 
    </td> 
</tr> 
</tbody> 
</table> 
+0

你的HTML是無效的,因爲你用同樣的'id'不止一次。這也是爲什麼jQuery不能選擇比第一個實例更多的原因。 – Sparky

回答

6

的ID應該是唯一的..使用ID選擇 - 它只會選擇第一個找到的元素與ID - 因此,事件處理只綁定的第一個按鈕 爲了您的代碼,你可以將其更改爲

$("button[name^=id_]").click(function() { 

或更改ID的上課和使用類選擇

1

你應該有唯一的ID對於元素,你可以使用名字與通配符點擊所有按鈕

$("input[type=button][id^=id_").click(function() { 

      var butName = $(this).attr("name"); 
      var user_id = butName.split("_")[1]; 
      alert(user_id); 
      name_of_sender = $('#username_'+user_id).html(); 
      text_of_sender = $('#text_'+user_id).html(); 

      alert(name_of_sender); 
      alert(text_of_sender); 

      $dialog.dialog('open'); 
      // prevent the default action, e.g., following a link 
      return false; 
     }); 
0

好吧,上面的例子似乎適用於某些人,但沒有爲我工作。命名編輯

這種方式非常按鈕的工作原理是相同的:

$('#Edit').live('click', function() { 

});