我不知道为什么 $(this).data()
在按钮单击事件处理程序中返回 null,但在 firebug 中调试时,$("#"+ $(this) .attr("id")).data()
返回我期望的数据。
for (var i = 0; i < options.AvailableOperations.length; i++) {
var operation = options.AvailableOperations[i];
var button = $(this).find("#btn" + operation);
button.data("operation", operation);
button.data("entityId", options.entityId);
button.parent().removeClass('disabledRevButton');
var data = { operation: operation, entityId: options.entityId };
button.click(function () {
$.postJson({
url: GlobalVars.perfomDFOperation,
data: $(this).data(),
success: function (data) {
if (data != null) {
if (data.IsSuccess && data.RefreshPage) {
location.reload(true);
}
else if (!data.isSuccess) {
alert("error: " + data.Message)
}
}
}
});
});
}
最佳答案
this
可能不再引用按钮本身,因为它已经位于 $.postJson()
范围内。
您可能想尝试使用闭包。
button.click(function(){
var myBtn = $(this);
$.postJson({
data: myBtn.data(),
// blah
});
});
我不确定,但值得一试。
关于jQuery: $(this).data() 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597928/