【问题标题】:Detect button click of a dynamic table contains dynamic buttons with jQuery使用 jQuery 检测动态表的按钮单击包含动态按钮
【发布时间】:2020-06-10 02:56:14
【问题描述】:

我使用phpMySQL 动态生成了以下table。生成的行数和按钮数是动态的。

<?php
if($resultCheck != 0){
    while($result = mysqli_fetch_array($tableQueryExecute)){
      $normalShiftDuration = $result['shift1Duration'];
?>  
        <tr> <form method="post" id="vtagViewTwo">         
        <td name=""><select class="form-control" name="normalShiftOa" id="normalShiftOa"><option>1</option></select></td>
        <td>
            <input type="submit" class="btn btn-primary" name="editButton" id="editButton" value="Save">
        </td>
        </form></tr> 
<?php
        }
                
    }
?>

我想获得&lt;td&gt; 的值,即normalShiftOa 值,点击按钮使用jQuery click event,如下所示。

$("#editButton").click(function(){
    alert("Clicked");
}); 

但是由于每一行都有很多按钮生成相同的id,所以我无法做到。有谁知道该怎么做?我可以使用 php $_POST['editButton'] 方法来做到这一点。但我想用 jQuery 来做。

编辑 1

我将 id editButton 更改为 class 并尝试了以下操作。但它不起作用

$(".editButton").click(function(){
    alert($(this).$("#normalShiftOa").val());
}); 

【问题讨论】:

  • Well Id 应该是唯一的,所以将id="editButton" 更改为class="editButton" 然后使用$(".editButton") 并且在点击函数内部$(this) 将引用您点击的按钮
  • 您也可以动态生成 id,因为您处于循环中,例如 id="normalShiftOa_&lt;?php echo $result['id']?&gt;"
  • @CarstenLøvboAndersen 你能举个简单的例子吗?
  • @AsifChaudhary 但是如何将 $result['id'] 获取到 Jquery 点击事件?
  • @MagnusEriksson 是的,你是对的。我刚刚编辑了我的代码以在此处显示它,并且在此过程中出现了这条额外的行。我的实际代码没有。谢谢提醒

标签: php jquery mysql html-table


【解决方案1】:

使用类editButton,而不是使用ID。然后,如果要获取select 的值,请使用如下所示的 jQuery:

$(".editButton").click(function(){
  let tdValue = $(this).closest("form").find("select").val();
});

编辑:代码 sn-p 有效。

  
   $(".editButton").click(function(event){
      let tdValue = $(this).closest("form").find("select").val();
      alert(tdValue);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr> <form method="post" id="vtagViewTwo">         
        <td name=""><select class="form-control" name="normalShiftOa" id="normalShiftOa"><option>1</option></select></td>
        <td>
            <input type="submit" class="editButton btn btn-primary" name="editButton" id="editButton" value="Save">
        </td>
        </form></tr>

【讨论】:

  • 所以我这样做了let tdValue = $(this).closest("#vtagViewTwo").find("#normalShiftOa").val();,然后尝试alert(tdValue);。但不工作。你知道我做错了什么吗?
  • 我看不到#vtagViewTwo 的位置,所以我不知道它是否正确。
  • 即表单的id。对不起。我更新了我的问题
  • 查看我的编辑并尝试运行代码sn-p。它应该工作。你确定你启用了 jQuery 吗?
  • jQuery 已启用。我试过你的最新代码,但它仍然没有显示。在控制台窗口中,它在$(".editButton").click(function(event){ 行捕获错误Uncaught ReferenceError: $ is not defined。我将脚本放在表单之后。这是您的代码现在唯一的区别。我想这不是问题
猜你喜欢
  • 1970-01-01
  • 2016-06-30
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多