我试图为命名空间文件中的设置创建一个jquery绑定
我的命名空间设置是这样的:
abc.settings = {
saveBtnId : "#saveitem",
cancelBtnId : "#cancelItem"
};
等
我正在尝试这个:
$(abc.settings.saveBtnId , abc.settings.cancelBtnId).bind("click", function(e) {
e.preventDefault();
var type = $(this).attr("data-id");
alert(type);
});
问题是,我没有得到任何错误(如预期的那样),但我也没有得到任何绑定 我正在使用CDN最新的jquery。
现在,如果我在这里有点跛足,你将不得不原谅我,但现在已经很晚了 大脑中的能量不足,但一如既往,你的帮助非常受欢迎答案 0 :(得分:2)
试试这个:
$(abc.settings.saveBtnId + "," + abc.settings.cancelBtnId).bind(...
你想要的是一个评估为"#saveitem,#cancelItem"
的选择器,所以你需要用逗号连接你的变量。
您目前正在做的是将两个单独的参数传递给$()
哪种看起来像$(selector, context)
语法,除了context
应该是DOM元素,Document,或jQuery对象,而不是第二个字符串。有关$()
参数的详细信息,请查看the doco。
答案 1 :(得分: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() {
...
});
});