从element获取类名,并选择具有相同类的所有元素

$('.classToClick').live("click", function () { $(this).attr('disabled', 'disabled'); $(this).val("lol"); $.post('post.php', { string: "lalala" }, function (data) { $(this).removeAttr('disabled'); }); }) 

这段代码不起作用,因为在post中我们使用$(this) 。 当我们将其更改为.classToClick ,它可以正常工作。

我们如何才能获得点击元素的类,以便我们可以像这样使用它?

 $('.classToClick').live("click", function () { var className = $(this).name; $(this).attr('disabled', 'disabled'); $(this).val("lol"); $.post('post.php', { string: "lalala" }, function (data) { $(className).removeAttr('disabled'); }); }) 

有可能做类似的事情吗?

点击后,您需要捕获类名,可以通过以下方式完成:

 var className = $(this).attr('class'); //Alternatively, $(this).prop('class') 

当你以后在$ selector中引用它时,你需要包含句点来表示正在选择一个类,如下所示:

 $('.' + className).removeAttr('disabled'); 

码:

 $('.classToClick').live("click", function() { var className = $(this).attr('class'); $(this).attr('disabled', 'disabled').val("lol"); $.post('post.php', {string : "lalala"}, function(data) { $('.' + className).removeAttr('disabled'); }); }) 

工作实例

这将有效:

 $('.classToClick').live("click", function() { var $el = $(this); $el.attr('disabled', 'disabled'); $el.val("lol"); $.post('post.php', {string : "lalala"}, function(data) { $el.removeAttr('disabled'); }); }); 

将jquery el存储在var中比一次又一次地调用$(this)更有效。 有一个谷歌保罗爱尔兰和jQuery性能提示:)

基本上在$.post $(this)回调中没有任何代表,你可以将$(this)分配给一个变量然后使用该变量来处理这样的事情

 var $field = $(this); 

然后可以用它作为

 $('.classToClick').live("click", function() { var className = $(this).name; $(this).attr('disabled', 'disabled'); $(this).val("lol"); var field = $(this); $.post('post.php', {string : "lalala"}, function(data) { $(field).removeAttr('disabled'); }); 

})

您还可以为回调设置上下文。 使用prop()方法更改元素属性的正确方法也是如此。

 $('body').on('click', '.classToClick', function() { $(this).prop('disabled', true) .val("lol"); $.ajax({ type: 'POST', url: 'post.php', context: $(this) data: { string : "lalala" }, success: function(data) { this.prop('disabled', false); } }); }) 

$(this).name将主要为您提供undefinednull值,因此它不起作用。 你可以做的是将对象的引用存储在局部变量中,然后在post success handler中使用它。 试试这个。

 $('.classToClick').live("click", function() { var $elem = $(this).attr('disabled', 'disabled').val("lol"); $.post('post.php', {string : "lalala"}, function(data) { $elem.removeAttr('disabled'); }); });