抱歉,如果标题不够清楚,当用户单击每个元素时,我有相同类的<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'); } );
}
});
});
});
那么我到底做错了什么呢?
提前谢谢你。
发布于 2012-05-29 10:12:21
在这种情况下,您不需要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-29 10:13:47
您有一个$this变量,设置为$(this)...$this在哪里定义?如果它超出了函数的作用域,那就是你的问题!
https://stackoverflow.com/questions/10797056
复制