0

我试图为我在命名空间文件中的设置创建一个 jquery 绑定

我的命名空间设置是这样的:

abc.settings = {
   saveBtnId : "#saveitem",
   cancelBtnId : "#cancelItem"
};

ETC

我正在尝试这个:

   $(abc.settings.saveBtnId , abc.settings.cancelBtnId).bind("click", function(e) {
             e.preventDefault();
             var type = $(this).attr("data-id");
             alert(type);
   });

问题是,我没有收到任何错误(如预期的那样),但我使用来自 CDN 的最新 jquery 也没有收到任何绑定。

现在如果我在这里有点跛脚,你将不得不原谅我,但现在已经很晚了,大脑中的能量正在耗尽,但一如既往地感谢你的帮助

4

2 回答 2

2

尝试这个:

$(abc.settings.saveBtnId + "," + abc.settings.cancelBtnId).bind(...

您想要的是一个计算结果为的选择器"#saveitem,#cancelItem",因此您需要用逗号将变量连接在一起。

您当前正在做的是将两个单独的参数传递给$()看起来像是$(selector, context)语法的类型,除了context应该是 DOM 元素、文档或 jQuery 对象,而不是第二个字符串。有关要$()执行的参数的更多信息,请查看doco

于 2012-08-27T23:07:11.297 回答
1

这应该这样做:

$.each(['saveBtnId', 'cancelBtnId'], function(v, i) {
    $(abc.settings[v]).on('click', function() {
       ...
    });
});

它使用一个字符串数组(可能已预先分配给另一个变量)并从您的命名空间中找到适当的属性并绑定单击处理程序。

或者,要保留您的命名空间属性:

$.each([abc.settings.saveBtnId, abc.settings.cancelBtnId], function() {
    $(this).on('click', function() {
       ...
    });
});
于 2012-08-27T23:14:23.387 回答