Javascript 使用JQuery将onClick分配给动态按钮

Javascript 使用JQuery将onClick分配给动态按钮,javascript,jquery,html,Javascript,Jquery,Html,我有一个表,我在其中每行动态创建一个按钮。因此,如果我们有3行,我们将在每行的第3列有3个按钮 我面临着两个层面的问题: i) 分配单个函数,该函数将在所有按钮的“onClick”处调用。 ii)读取已按下按钮对应列的值, 例如:假设我们有3列,我按下第2行、第3列的按钮,我需要读取第2行、第1列和第2列的值 整个过程是动态构建的 这是表格: <body> <div id="up"></div> <table id = "tab" sty

我有一个表,我在其中每行动态创建一个按钮。因此,如果我们有3行,我们将在每行的第3列有3个按钮

我面临着两个层面的问题:

i) 分配单个函数,该函数将在所有按钮的“onClick”处调用。 ii)读取已按下按钮对应列的值, 例如:假设我们有3列,我按下第2行、第3列的按钮,我需要读取第2行、第1列和第2列的值

整个过程是动态构建的

这是表格:

<body>
    <div id="up"></div>
    <table id = "tab" style="width:500px">
        <tr>
            <th>Date/Time</th>
            <th>Session Activity</th>
            <th>Action</th>
        </tr>
             <?php
                    $uid = $_SESSION["uid"];
                    $client = $_SESSION["Client"];
                    $con = mysqli_connect('localhost', 'root', '12345', 'MyDB');
                    if (mysqli_connect_errno()){
                        echo "<option value='".'0'."'>".'Connection Error'."</option>";
                        exit();
                    }else{
                        $res=mysqli_query($con, "select * from TL_Session_Notes Where Uid = '".$uid."' AND CName = '".$client."'");
                        while($row=mysqli_fetch_array($res))
                        {
                            echo "<tr><td>".$row['Sn_date'].'/'.$row['Sn_time']."</td><td>".$row['Sn_activity']."</td>".
                            "<td id = '"."openBtns"."'><input type='"."button"."' class = '"."btns"."' value = '"."Open Session Note"."' action = '"."OpenSession()"."'/>"."</td></tr>";
                        }
                    }
                    mysqli_close($con);
             ?>
    </table>
    <div id="down"></div>
</body>

日期/时间
会话活动
行动

您的
td.openBtns
也会动态添加。您必须使用静态/非动态选择器

看起来
#tab
就是您想要的

$("#tab").on('click', '.btns', function() {
    OpenSession();
});
或尝试

$(document).on('click', '.btns', function() {
    OpenSession();
});

您的
td.openBtns
也会动态添加。您必须使用静态/非动态选择器

看起来
#tab
就是您想要的

$("#tab").on('click', '.btns', function() {
    OpenSession();
});
或尝试

$(document).on('click', '.btns', function() {
    OpenSession();
});
选择器
$(“OpenBTN”)
正在获取所有
元素

由于您有一个id为“openBtns”的表,因此需要在id之前添加

$("#openBtns").on('click', '.btns', function() {
       OpenSession();
});
选择器
$(“OpenBTN”)
正在获取所有
元素

由于您有一个id为“openBtns”的表,因此需要在id之前添加

$("#openBtns").on('click', '.btns', function() {
       OpenSession();
});
尝试:

<html>
<head>
    <script type="text/javascript">
    function OpenSession(date, time, activity)
    {
/* here we can do something creative with the arguments date, time and activity */
            window.location.replace('Sessions.php');
    }
    </script>
</head>
<body>
    <div id="up"></div>
    <table id="tab" style="width:500px">
        <tr>
            <th>Date/Time</th>
            <th>Session Activity</th>
            <th>Action</th>
        </tr>
<?php
        output_rows();
?>
    </table>
    <div id="down"></div>
</body>

<?php
function output_rows()
{
    $uid = $_SESSION["uid"];
    $client = $_SESSION["Client"];

    $con = mysqli_connect('localhost', 'root', '12345', 'MyDB');

    if (mysqli_connect_errno()){
            echo "<option value='0'>Connection Error</option>";
    }else{
        $name = mysql_escape_string($name);
        $client = mysql_escape_string($client);
        $res=mysqli_query($con, "select * from TL_Session_Notes Where Uid='$uid' AND CName='$client'");

        while($row=mysqli_fetch_array($res))
        {
            $date = $row['Sn_date'];
            $time = $row['Sn_time'];
            $activity = $row['Sn_activity'];

            echo "<tr>";
                echo "<td>$date/$time</td><td>$activity</td>";              
                echo "<td><input type='button' class='btns' value='Open Session Note' onclick='OpenSession(\"$date\", \"$time\", \"$activity\")' /></td>";
            echo "</tr>";
        }
    }

    mysqli_close($con);
}
?>
</body>
</html>

函数OpenSession(日期、时间、活动)
{
/*在这里,我们可以对日期、时间和活动进行一些创造性的讨论*/
replace('Sessions.php');
}
日期/时间
会话活动
行动
尝试:

<html>
<head>
    <script type="text/javascript">
    function OpenSession(date, time, activity)
    {
/* here we can do something creative with the arguments date, time and activity */
            window.location.replace('Sessions.php');
    }
    </script>
</head>
<body>
    <div id="up"></div>
    <table id="tab" style="width:500px">
        <tr>
            <th>Date/Time</th>
            <th>Session Activity</th>
            <th>Action</th>
        </tr>
<?php
        output_rows();
?>
    </table>
    <div id="down"></div>
</body>

<?php
function output_rows()
{
    $uid = $_SESSION["uid"];
    $client = $_SESSION["Client"];

    $con = mysqli_connect('localhost', 'root', '12345', 'MyDB');

    if (mysqli_connect_errno()){
            echo "<option value='0'>Connection Error</option>";
    }else{
        $name = mysql_escape_string($name);
        $client = mysql_escape_string($client);
        $res=mysqli_query($con, "select * from TL_Session_Notes Where Uid='$uid' AND CName='$client'");

        while($row=mysqli_fetch_array($res))
        {
            $date = $row['Sn_date'];
            $time = $row['Sn_time'];
            $activity = $row['Sn_activity'];

            echo "<tr>";
                echo "<td>$date/$time</td><td>$activity</td>";              
                echo "<td><input type='button' class='btns' value='Open Session Note' onclick='OpenSession(\"$date\", \"$time\", \"$activity\")' /></td>";
            echo "</tr>";
        }
    }

    mysqli_close($con);
}
?>
</body>
</html>

函数OpenSession(日期、时间、活动)
{
/*在这里,我们可以对日期、时间和活动进行一些创造性的讨论*/
replace('Sessions.php');
}
日期/时间
会话活动
行动

这应该解决您请求的第二部分

$('.openBtns')。在('click','.btns',函数(){
var td1=$(this).closest('td').prev('td').text();
var td2=$(this).closest('td').prev('td').prev('td').text()
警报(td1+“”+td2);

});

这应该解决您请求的第二部分

$('.openBtns')。在('click','.btns',函数(){
var td1=$(this).closest('td').prev('td').text();
var td2=$(this).closest('td').prev('td').prev('td').text()
警报(td1+“”+td2);

});

@Priyabrata-您可以创建一个JSFIDLE来重现该问题吗?@Priyabrata-使用
$(文档)
。。请参阅更新的答案。很难使用JSFIDLE,因为我需要使用数据动态创建行。@Priyabrata-您可以创建一个JSFIDLE来重现问题吗?@Priyabrata-使用
$(文档)
。。请参阅更新的答案。很难使用JSFIDLE,因为我需要使用数据动态创建行。您有多个id为openBtns的元素吗?此外,您正在执行不必要的字符串连接(过度使用.operator)。动态创建元素时,是否可以为不同的元素使用不同的id?您不需要这些id:s,我想您有多个id为OpenBTN的元素?另外,您正在进行不必要的字符串连接(过度使用.operator)。动态创建元素时,是否可以为不同的元素使用不同的id?您不需要这些id:s,我想是的,那里没有任何$name参数。其余的都好。谢谢:)是的,那里没有任何$name参数。其余的都好。谢谢:)