即使在.ajax()之后jQuery preventDefault()

时间:2013-09-09 23:43:47

标签: jquery

使用

将PHP脚本拉入我的页面时
$.ajax({
    url: "/assets/inc/user-stream-list.php",
    success: function (data) {
        $(".user-stream-list").html(data);
    }
});

它生成<a>,我目前使用

$('.col-l .feed a').click(function(e){
    e.preventDefault();
});

要停止点击链接,但在运行.ajax()脚本后链接变为可点击。

有没有办法防止链接在ajax运行后被点击?

3 个答案:

答案 0 :(得分:3)

click事件委托给在AJAX调用之前存在的DOM上方的元素。

例如:

$(document).on('click', '.col-l .feed a', function(e){
    e.preventDefault();
});

请注意带有三个参数的.on()方法如何将事件委托给document元素,而不是将其直接绑定到尚未存在的a元素。当然,document与DOM树一样高。但只要你知道它们存在,就可以使用更近的父母。

答案 1 :(得分:2)

由于HTML是通过AJAX加载的,如果要将事件绑定到它,则需要使用on将它们绑定到父级,并在其上设置过滤器。

$(".user-stream-list").on('click', '.col-l .feed a', function() {
 ...
});

编辑:live已弃用。请改用on

答案 2 :(得分:-1)

使用带有加载图标的叠加div,以防止来自任何元素的点击事件...

这里有一个例子: jQuery: How can i create a simple overlay?

检查另一个例子: How can I create a "Please Wait, Loading..." animation using jQuery?