将jquery click事件绑定到设置中的id

时间:2012-08-27 23:04:53

标签: jquery

我试图为命名空间文件中的设置创建一个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。

现在,如果我在这里有点跛足,你将不得不原谅我,但现在已经很晚了 大脑中的能量不足,但一如既往,你的帮助非常受欢迎

2 个答案:

答案 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() {
       ...
    });
});