无法控制$('input')。click(function()

时间:2013-03-28 17:01:49

标签: jquery function input click

我无法让我的点击事件表现出来。我需要从每个表行中的每个<input>触发它 - 仅在此表中,而不是在页面上其他地方的<input>中(在代码段中未显示)。

$('input').click(function() {

然而,它会触发我页面上其他地方的<input>(未在摘要中看到)。

所以我尝试用id指定它。

$('#File_Number').click(function() {

但这仅适用于第一个表格行,仅适用于第一个<input>

每个表行都是从MySQL生成的。因此,id="file_number"出现了很多次。

以下是正常运作的源代码:http://jtjohnston.net/clickeventtest/database.php

理想情况下,我希望点击事件从每个存在于每一行的id中触发。

id="File_Number"
id="File_DateTime"
id="Address"
id="File_Comments"

<tr id="2013-0469">
<td id=""><input id="File_Number" value="2013-0455" type="readonly" size="7"></td>
<td id=""><input id="File_DateTime" value="2013-03-16 03:08:12" type="readonly" size="18"></td>
<td id=""><input id="Address" value="123 Sesame Street" type="readonly" size="20"></td>
<td id=""><input id="File_Comments" value="Something said done entered" type="readonly" size="30"></td>
</tr>
<tr id="2013-0570">
<td id=""><input id="File_Number" value="2013-0965" type="readonly" size="7"></td>
<td id=""><input id="File_DateTime" value="2013-03-17 02:08:14" type="readonly" size="18"></td>
<td id=""><input id="Address" value="123 Baker Street" type="readonly" size="20"></td>
<td id=""><input id="File_Comments" value="Something said done entered" type="readonly" size="30"></td>
</tr>

<script type='text/javascript'>
//$.removeCookie("test");

//$('input').click(function() {
$('#File_Number').click(function() {
  var id = $(this).parents('tr').attr('id');
      alert(id);
//    $.cookie("Row_Id", id, {   expires : 10});
      window.open("something.php","_new");

});

</script>

5 个答案:

答案 0 :(得分:2)

ID的需要是唯一的,将所有输入ID替换为类,然后通过定位类来相应地调整jQuery,例如

$('.File_Number').click(function() {
  var id = $(this).parents('tr').attr('id');
      alert(id);
//    $.cookie("Row_Id", id, {   expires : 10});
      window.open("something.php","_new");

});

请务必在表格中添加ID (如果您在该页面上使用多个表格)。

然后您可以像这样定位它:

$('#tableID').on('click', 'input', function() {

});

答案 1 :(得分:1)

试试这个

$('#tableID td input').click(function() {
....

或使用on

将输入委托给表格
$('#yourTableID').on('click', 'input', function() {

并且是的...一如既往...... ID应该始终是唯一的...它可能会起作用,但可能会让您遇到麻烦

答案 2 :(得分:1)

每个ID在页面中应该是唯一的,因此您需要使用类似

的类替换输入ID
<tr id="2013-0469">
    <td id=""><input class="File_Number" value="2013-0455" type="readonly" size="7"></td>
    <td id=""><input class="File_DateTime" value="2013-03-16 03:08:12" type="readonly" size="18"></td>
    <td id=""><input class="Address" value="123 Sesame Street" type="readonly" size="20"></td>
    <td id=""><input class="File_Comments" value="Something said done entered" type="readonly" size="30"></td>
</tr>

JS

$('table').on('click', 'input', function(e){
  var id = $(this).parents('tr').attr('id');
      alert(id);
//    $.cookie("Row_Id", id, {   expires : 10});
      window.open("something.php","_new");

})

还要向表中添加id属性,以便您可以轻松识别

<table id="my-table">
    <tr>
        <td>.....

然后将脚本更改为

$('#my-table').on('click', 'input', function(e){

答案 3 :(得分:0)

使用事件委托:

$('#tableid').on('click', 'input', function() {

#tableid必须是您希望收听其子输入点击的表格的ID。

答案 4 :(得分:0)

$(#id_of_your_table tr td input).click(function ....)