【问题标题】:jQuery mobile and href links inside a table not working表格内的jQuery mobile和href链接不起作用
【发布时间】:2015-05-21 15:23:38
【问题描述】:

我正在使用 jQuery mobile 并使用 ajax 填充表格,其中一个字段是我分配一个类的 href,以在屏幕上显示警报,它不会触发任何内容:

我试过用双引号和单引号都没有成功:

双引号:

$("#table1").append("<tr><td><a href='#' class='linkTest'>" + element.field1 + "</a></td><td>" + element.field2 + "</td><td>" + element.field3 + "</td></tr>");

单引号:

$("#table1").append('<tr><td><a href="#" class="linkTest">' + element.field1 + '</a></td><td>' + element.field2 + '</td><td>' + element.field3 + '</td></tr>');

jQuery 方法:

$(".linkTest").click(function(){
    alert("It works");
});

表格已正确填充,但单击时未显示警报。如果我在表格外添加一个按钮,它可以工作:

<a href="#" class="linkTest"> TEST </a> 

感谢您的帮助,谢谢!

【问题讨论】:

  • 您可以将点击绑定到文档,使其始终监听。而且你不需要包含 href="#" -- jsfiddle.net/o04pescz

标签: javascript jquery html ajax jquery-mobile


【解决方案1】:

因为您的链接是动态添加到 DOM 中的,所以点击事件将不起作用。

这正是您正在寻找的 event Delegation 和 还得防止超链接的默认功能

考虑以下sn-p:

$("#table1").on('click','.linkTest', function(e){
    e.preventDefault();//for prevent default redirect
    alert("It works");
});

【讨论】:

  • 有效!谢谢!也许我必须为此创建另一个线程,但是,有没有办法获取 值并将其显示在 javascript 警报中?谢谢!
  • 我刚刚通过使用:alert($(this).closest('tr').find('td:eq(0)').text()) ; 显示第一列的值,谢谢!
【解决方案2】:

$(".linkTest").click() 不适用于随后添加的任何动态创建的元素。在添加动态内容后执行 $(".linkTest").click() 或将事件绑定到包含元素,例如$('body').on('click', '.linkTest', function() { });

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签