Javascript Ajax调用只在第一次使用时才起作用

Javascript Ajax调用只在第一次使用时才起作用,javascript,jquery,ajax,Javascript,Jquery,Ajax,这是我的代码,要修改表单元格的内容,请单击同级单元格的链接“打开/关闭” 第一次链接运行良好,但在第二次单击时,执行将从 $("a[href*='close']").click(function (event) 即使新链接包含“打开”而不是“关闭”这个词 我为什么有这种行为? 问题是什么?我怎样才能解决它 提前谢谢 $(document).ready(function() { $("a[href*='close']").click(function (event)

这是我的代码,要修改表单元格的内容,请单击同级单元格的链接“打开/关闭”

第一次链接运行良好,但在第二次单击时,执行将从

$("a[href*='close']").click(function (event)
即使新链接包含“打开”而不是“关闭”这个词

我为什么有这种行为? 问题是什么?我怎样才能解决它

提前谢谢

$(document).ready(function()
    {

        $("a[href*='close']").click(function (event)
        {
            event.preventDefault();
            var click = $(this);
            console.log(click);
            var url = click.attr("href");
            console.log(url);
            var nid = url.split("/")[1];
            console.log(nid);
            // var url = "close/" + nid;
            // console.log(url);
            $.get(url, function(data, status)
            {
                if (data.status == 1)
                {
                    console.log(data.res);
                    click.text("Open");
                    var new_url = url.replace("close", "open");
                    console.log("New Url = " + new_url);
                    click.attr("href", new_url);
                    click.parent().prev().text(data.res);
                }
                else
                {
                    console.log("Error");
                }

            });
        });        // CHIUDE FUNZIONE

        $("a[href*='open']").click(function (event)
        {
            event.preventDefault();
            var click2 = $(this);
            console.log(click2);
            var url = click2.attr("href");
            console.log(url);
            var nid = url.split("/")[1];
            console.log(nid);
            // var url = "open/" + nid;
            // console.log(url);
            $.get(url, function(data, status)
            {
                if (data.status == 1)
                {
                    console.log(data.res);
                    click2.text("Close");
                    var new_url = url.replace("open", "close");
                    console.log("New Url = " + new_url);
                    click2.attr("href", new_url);
                    click2.parent().prev().text(data.res);
                }
                else
                {
                    console.log("Error");
                }

            });
        });        // CHIUDE FUNZIONE

正如我在对问题的评论中所述,您可以使用委托事件绑定,而不是处理事件绑定,以允许事件仅由您希望处理它们的逻辑处理

$(文档)。在('click','a[href*=“close”]”上,函数(事件){
event.preventDefault();
console.log('close');
event.target.href='#打开';
});
$(文档)。在('click','a[href*=“open”]”上,函数(事件){
event.preventDefault();
console.log('open');
event.target.href='关闭';
});


事件绑定到元素。一旦它们被捆绑,它们就在那里,直到被移除。从元素中删除事件绑定的唯一方法是逻辑将其删除,或者元素被销毁。对元素的任何其他更改都不会删除绑定。因此,您将替换链接上的打开/关闭,但其上的原始绑定仍将存在。解决这个问题的一个简单方法是使用委托绑定,而不是直接绑定。委托绑定为每个冒泡的事件计算其子选择器。因此它是对元素状态的反应。找到锚点的父元素并使用
$()绑定到该锚点。在('click','a[href*=“close”]”,function(event){…})
上,一切都很顺利,非常感谢您的快速回答和非常清晰的示例,这是我在任何其他地方都找不到的。祝你们玩得开心,你们让我开心