$('.classToClick').live("click", function () {
$(this).attr('disabled', 'disabled');
$(this).val("lol");
$.post('post.php', {
string: "lalala"
}, function (data) {
$(this).removeAttr('disabled');
});
})
此代码不起作用,因为在帖子中我们使用$(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');
});
})
是否可以做类似的事情?
答案 0 :(得分:1)
单击后,您需要捕获类名,可以通过以下方式完成:
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');
});
})
<强> Working Example 强>
答案 1 :(得分:1)
这将有效:
$('.classToClick').live("click", function() {
var $el = $(this);
$el.attr('disabled', 'disabled');
$el.val("lol");
$.post('post.php', {string : "lalala"}, function(data) {
$el.removeAttr('disabled');
});
});
在var中存储jquery el
比一次又一次地调用$(this)
更有效。有一个谷歌保罗爱尔兰和jQuery性能提示:)
答案 2 :(得分:0)
基本上在$.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');
});
})
答案 3 :(得分:0)
您还可以为回调设置上下文。
同样,更改元素属性的正确方法是使用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);
}
});
})
答案 4 :(得分:0)
$(this).name
通常会为您提供undefined
或null
值,因此无效。您可以做的是将对象的引用存储在局部变量中,然后在后成功处理程序中使用它。试试这个。
$('.classToClick').live("click", function() {
var $elem = $(this).attr('disabled', 'disabled').val("lol");
$.post('post.php', {string : "lalala"}, function(data) {
$elem.removeAttr('disabled');
});
});