jQuery: $(this).data() 为空

标签 jquery

我不知道为什么 $(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/

相关文章:

jquery - 当通过提交按钮以外的其他方式提交表单时,如何触发事件?

javascript - 如何使用 jquery 激活特定选项卡?

jquery - 选择掉落元素总是在前面

javascript - jQuery 选择数组数据属性中包含指定项目的元素

javascript - 如何使用选择但仍然允许输入文本

javascript - 使用 Javascript 在 session 中自动递增不起作用

javascript - For循环不显示html中的任何数据

jquery - 为什么我的响应式菜单在宽度调整大小/更改时没有显示?

jquery - 使用 jQuery 将此字符串转换为 JSON 对象数组

javascript - if 内有多个组合的 if