我在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);
});
答案 0 :(得分:4)
Boris' answer是目前最好的方法。 (除非我不在那里使用.data
。)
如果你不能,那你就不会太远:
$('.btlink').on('click', () => {
// ^^^^^^^--- (1)
var linkdovideo = $(this).closest("ul").find(".linkvd").val();
// (2) -----------------^ ^ ^ ^
// (3) ----------------------/ / /
// (4) -----------------------------------/ /
// (5) --------------------------------------------------/
alert(linkdovideo);
});
处理按钮上的点击,而不是li
。
this
是点击的button
。
然后我们通过ul
前往.closest("ul")
。
使用find
,我们可以找到.linkvd
中的ul
。
.val()
获取其当前值。使用input
元素,您几乎不会想要.attr("value")
,因为这不是元素的当前值,而是元素的默认值。 (令人困惑,我知道。)现在,如果你永远不会在代码中改变那个值,它会起作用,因为它是一个隐藏的元素,但一般来说,最好养成使用.val()
输入的习惯。
附注:注意: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);
});