知道在php循环中点击了哪一行

时间:2016-06-21 09:06:56

标签: javascript php jquery html mysql

我在php中有一个while循环,它从我的mysql数据库中返回一些数据,

这个循环创建了几个ul动态读取,返回银行调查的行,

每行返回1个按钮,隐藏的输入类型包含其值

的链接

我想知道点击每个按钮的链接。

例如,列表返回10行

每一行都有一个带链接值的隐藏输入

我想知道什么是链接主页值,所以我点击按钮btlink

Example

<Ul>
    <?php while ($ videolist = $ resultvideos-> fetch_array ()) {?>
    <Li>
        <Ul>
            <Li class = "listdivvideos">
                <Button class = "btlink" id = "btlink"> </ button>
            </ Li>
            <Li>
                <Input type = "hidden" class = "linkvd" value = "<? Php echo $ videolist [ 'link']?>"> </ Input>
            </ Li>
        </ Ul>
    </ Li>
</ Ul>
<? Php}?>

我尝试使用此代码,但它只返回第一个链接

$('.listdivvideos').on('click', function(){
      var linkdovideo = $('.linkvd').attr('value');
      alert(linkdovideo);
});

4 个答案:

答案 0 :(得分:4)

如果您可以更改结构,

Boris' answer是目前最好的方法。 (除非我不在那里使用.data。)

如果你不能,那你就不会太远:

$('.btlink').on('click', () => {
// ^^^^^^^--- (1)
    var linkdovideo = $(this).closest("ul").find(".linkvd").val();
// (2) -----------------^     ^             ^               ^
// (3) ----------------------/             /               /
// (4) -----------------------------------/               /
// (5) --------------------------------------------------/
    alert(linkdovideo);
});
  1. 处理按钮上的点击,而不是li

  2. this是点击的button

  3. 然后我们通过ul前往.closest("ul")

  4. 使用find,我们可以找到.linkvd 中的ul

  5. .val()获取其当前值。使用input元素,您几乎不会想要.attr("value"),因为这不是元素的当前值,而是元素的默认值。 (令人困惑,我知道。)现在,如果你永远不会在代码中改变那个值,它会起作用,因为它是一个隐藏的元素,但一般来说,最好养成使用.val()输入的习惯。

  6. 附注:注意:input元素为void elements</input>始终不正确。如果您使用的是HTML,请写下<input ...>。 (如果您正在编写XHTML,则需要编写<input ... />,但不是。{/ p>

答案 1 :(得分:4)

首先,你不需要输入元素,你可以这样做:

<?php while ($ videolist = $ resultvideos-> fetch_array ()) { ?>
<li>
    <button class="btlink" data-value="<?php echo $ videolist['link'] ?>">Click me</button>
</li>
<?php } ?>

然后在你的jQuery代码中:

$(".btlink").click(function() {
    alert($(this).data("value"));
});

答案 2 :(得分:0)

clean

答案 3 :(得分:0)

由于按钮和隐藏输入之间没有直接关系,除了它们在同一个ul容器中,你可以这样做:

$('.listdivvideos').on('click', '.btlink', function {
    var link= $(this).closest('ul').find('.linkvd').val();
    alert(link);
});