Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 我看到旧类了吗_Jquery_Ajax - Fatal编程技术网

Jquery 我看到旧类了吗

Jquery 我看到旧类了吗,jquery,ajax,Jquery,Ajax,我有这个: $(".follow").click(function() { var element = $(this); var id = element.attr("id"); var data = "id=" + id; $.ajax({ type: "POST", url: "follow.php", data: data, su

我有这个:

$(".follow").click(function() {
        var element = $(this);
        var id = element.attr("id");
        var data = "id=" + id;

        $.ajax({
            type: "POST",
            url: "follow.php",
            data: data,
            success: function(result) {
                element.removeClass("follow");
                element.addClass("unfollow");
            }
        });
        return false;
    });

    $(".unfollow").click(function() {
        alert("Hey, dude");
    });
当我点击我的按钮时,我可以看到Firebug的类开关。但是如果我再次尝试单击该按钮,它不会显示警报,脚本总是向follow.php发送POST请求

为什么?

您需要使用而不是
。单击(…)
。前者适用于现在和将来匹配该选择器的所有元素,而后者仅适用于现在匹配该选择器的元素

这不是ajax“看到”旧类的问题,而是事件侦听器的绑定方式
$(“.follow”)。单击(回调)
查找DOM中具有类
follow
的所有元素,然后将
callback
绑定到每个此类元素的
click
事件。删除
follow
类不会删除事件侦听器

.live()
也只绑定一个监听器,而不是jQuery对象中的每个元素绑定一个监听器,因此它在这方面更“高效”(阅读:轻量级)

$(".follow").live("click", function() {
    var element = $(this),
        data = "id=" + this.id;

    $.ajax({
        type: "POST",
        url: "follow.php",
        data: data,
        success: function(result) {
            element.removeClass("follow").addClass("unfollow");
        }
    });

    return false;
});

$(".unfollow").live("click", function() {
    alert("Hey, dude");
});
笔记
  • 您可以而且应该使用
    this.id
    而不是
    $(this.attr(“id”)
    )。看
  • 利用jQuery的可链接性获得更高效、简洁的代码

  • 非常感谢你,伙计。你动摇了我们的船。也谢谢你的笔记!