1

抱歉,如果标题不够清楚,<a>当用户单击每个元素时,我的元素具有相同的类,jquery 代码应该单独为每个元素运行,问题是单击第一个元素时,如果我在它完成运行整个代码之前单击第二个元素,它使第一个元素不完整并在第二个元素上运行代码,它应该同时工作(顺便说一句,它应该将数据发送到 php 文件,即使我单击类的许多元素也可以正常工作不是在职的)

这是代码:

    jQuery(function($) {
        $('.anchor-tag-class').each(function() {
            $(this).click(function() {
                $this = $(this);
                var id = $this.attr('data-id');
                if ( $this.hasClass('on') ) {
                    $this.removeClass('on');
                    $this.addClass('loading');
                    $.post("process.php", { element_id: id, status: 'off' }, function(data) { $this.addClass('off').removeClass('loading'); } );
                } else {
                    $this.removeClass('off');
                    $this.addClass('loading');
                    $.post("process.php", { element_id: id, status: 'on' }, function(data) { $this.addClass('on').removeClass('loading'); } );
                }
            });
        });
    });

那我做错了什么?

并提前感谢。

4

2 回答 2

2

在这种情况下您不需要each(),因为代码只会针对引发事件的特定元素运行。您还可以链接您的函数挂在$this变量上。

试试这个:

$('.anchor-tag-class').click(function() {
    var $this = $(this);
    var id = $this.attr('data-id');
    if ( $this.hasClass('on') ) {
        $this.removeClass('on').addClass('loading');
        $.post("process.php", { element_id: id, status: 'off' }, function(data) { $this.addClass('off').removeClass('loading'); } );
    } 
    else {
        $this.removeClass('off').addClass('loading');
        $.post("process.php", { element_id: id, status: 'on' }, function(data) { $this.addClass('on').removeClass('loading'); } );
    }
});
于 2012-05-29T10:12:20.790 回答
1

你有一个 $this 变量,设置为 $(this)... $this 定义在哪里?如果它超出了函数的范围,那就是你的问题!

于 2012-05-29T10:13:46.800 回答