-2

我无法让我的点击事件正常运行。我需要它从每个<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>
4

5 回答 5

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() {

});
于 2013-03-28T17:03:29.517 回答
1

尝试这个

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

或使用on

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

是的...一如既往... ID应该始终是唯一的...它可能会起作用,但以后可能会给您带来麻烦

于 2013-03-28T17:04:34.303 回答
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){
于 2013-03-28T17:05:13.073 回答
0

使用事件委托:

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

#tableid必须是您要侦听其子输入点击的表的 id。

于 2013-03-28T17:04:54.620 回答
0

$(#id_of_your_table tr td 输入).click(function....)

于 2013-03-28T17:05:48.187 回答