添加jquery行后,jQuery不起作用[复制]

问题描述 投票:-2回答:5

这个问题在这里已有答案:

我列出了这个脚本的几行

$("a.remove").click(function(){
    var id = $(this).attr('id')
    var user = $(this).attr('value')
    $.ajax({
        success : function(){
            var url = "includes/action.php?page=access&action=remove";
            var popupmessage = "Error";
            $.post(url, { id: id },
                function(data){
                    return true;
            });
        }
    });
});

但是当我通过jQuery添加新行时,它在刷新页面之前不起作用

$("<a class=\"remove\" href=\"#\"></a>").insertAfter('#accesstable tr:last');

任何想法如何解决它?

编辑:工作代码

$('a.remove').live('click', function(){
    var id = $(this).attr('id')
    var user = $(this).attr('value')
    $.ajax({
        success : function(){
            var url = "includes/action.php?page=access&action=remove";
            var popupmessage = "Error";
            $.post(url, { id: id },
                function(data){
                    return true;
            });
        }
    });
});
jquery reload
5个回答
0
投票

如果您的意思是新添加的锚标记不会调用您已声明的相同单击事件,那是因为您使用的是.click()函数。这仅将click事件添加到当前页面中的匹配元素。

你应该看看使用live()事件,因为这样

为现在和将来与当前选择器匹配的所有元素附加事件处理程序。

所以你可以改为:

$("a.remove").live('click', function(){ .. });

编辑

不推荐使用Live(),现在应该使用on()函数。


3
投票

尝试:

$(document).on('click', 'a.remove', function(){

委托事件的优点是,它们可以处理来自稍后添加到文档的后代元素的事件。通过选择在附加委托事件处理程序时保证存在的元素,您可以使用委派事件来避免频繁附加和删除事件处理程序的需要。

http://api.jquery.com/on/#direct-and-delegated-events


1
投票

猜测(因为没有足够的代码显示确定),你的问题是你绑定了点击,然后添加了一个应该被该点击处理程序绑定的元素。它不起作用。如果与.click绑定,它将绑定当时存在的所有匹配元素。它不会自动绑定创建的新元素。

要绑定尚未创建的元素,请在带有选择器的父元素上使用.on


0
投票

jQuery忽略了动态添加的内容的监听器,使用jQuery的qazxsw poi

live

编辑:live已弃用,请使用on解决方案


-1
投票

.live不推荐使用:

$("a[class='remove']").live('click', function(){});
© www.soinside.com 2019 - 2024. All rights reserved.