Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将jquery单击事件绑定到设置中的ID_Jquery - Fatal编程技术网

将jquery单击事件绑定到设置中的ID

将jquery单击事件绑定到设置中的ID,jquery,Jquery,我正在尝试为名称空间文件中的设置创建jquery绑定 我的命名空间设置如下所示: abc.settings = { saveBtnId : "#saveitem", cancelBtnId : "#cancelItem" }; 等 我正在尝试: $(abc.settings.saveBtnId , abc.settings.cancelBtnId).bind("click", function(e) { e.preventDefault();

我正在尝试为名称空间文件中的设置创建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

如果我在这里有点跛脚,你必须原谅我,但现在已经很晚了 大脑中的能量越来越少,但一如既往,我们非常感谢您的帮助

$(abc.settings.saveBtnId + "," + abc.settings.cancelBtnId).bind(...
您需要的是一个计算结果为
“#saveitem,#cancelItem”
的选择器,因此需要用逗号将变量连接在一起

您当前正在做的是将两个单独的参数传递给
$()
,这看起来像是
$(选择器,上下文)
语法,除了
上下文
应该是DOM元素、文档或jQuery对象,而不是第二个字符串。有关
$()
的参数的详细信息,请查看。

尝试以下操作:

$(abc.settings.saveBtnId + "," + abc.settings.cancelBtnId).bind(...
您需要的是一个计算结果为
“#saveitem,#cancelItem”
的选择器,因此需要用逗号将变量连接在一起

您当前正在做的是将两个单独的参数传递给
$()
,这看起来像是
$(选择器,上下文)
语法,除了
上下文
应该是DOM元素、文档或jQuery对象,而不是第二个字符串。有关
$()
的参数的详细信息,请查看。

这应该可以做到:

$.each(['saveBtnId', 'cancelBtnId'], function(v, i) {
    $(abc.settings[v]).on('click', function() {
       ...
    });
});
它使用一个字符串数组(可能已预先分配给另一个变量),并从命名空间中查找适当的属性并绑定单击处理程序

或者,要保留名称空间属性,请执行以下操作:

$.each([abc.settings.saveBtnId, abc.settings.cancelBtnId], function() {
    $(this).on('click', function() {
       ...
    });
});
这应该做到:

$.each(['saveBtnId', 'cancelBtnId'], function(v, i) {
    $(abc.settings[v]).on('click', function() {
       ...
    });
});
它使用一个字符串数组(可能已预先分配给另一个变量),并从命名空间中查找适当的属性并绑定单击处理程序

或者,要保留名称空间属性,请执行以下操作:

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

对第二个有效,但不是第一个!我知道它通常看起来像美元(“#firstid,#secondid”)。上面的字符串似乎忽略了第一个id,只需执行第二个id。请原谅我,你的权利!我对第一个按钮使用了错误的设置名称,:-)非常感谢……不客气。(很抱歉,我最初关于第二个参数的说法不正确,但我已经编辑了我的答案来修正它。)是的,很好,我完全理解好的解释:-)第二个参数有效,但第一个参数无效!我知道它通常看起来像美元(“#firstid,#secondid”)。上面的字符串似乎忽略了第一个id,只需执行第二个id。请原谅我,你的权利!我对第一个按钮使用了错误的设置名称,:-)非常感谢……不客气。(很抱歉,我最初关于第二个参数所说的不正确,但我已经编辑了我的答案来修复它。)是的,这很好,我完全理解好的解释:-)这不正确,因为它没有使用名称空间设置,用于防止开发人员在对象ID上出错,以及在对象上启用intellisense(智能感知)编码。我不明白“不使用名称空间设置”是什么意思-它们在第二行。除非在标签前面加上名称空间,否则您的智能感知无法识别标签。字符串文字是使用变量访问对象属性的唯一方式。我只是认为添加['saveBtnId','cancelBtnId']会增加更多的范围和更多需要更正的内容,如果cancel按钮不再是cancel,客户会说,这会是一个保存,而save按钮是一个订单吗??你必须检查你的代码!!但也许是因为我从来没有见过它写得像这样,所以我不太明白你到底做了什么,它是如何工作的@davethecoder更改字符串与更改属性标签没有什么不同,只是在后一种情况下,您可能会从IDE的“重构”工具获得帮助。
['a',b']
的要点是通过不需要大量的串联(根据nnnn的回答),更容易更改受影响元素的列表。是的,我理解重新分解,你也一样。。。。但是很多程序员甚至都不知道,不管怎样,我已经读了好几遍了,是的,我理解,我也注意到了你的用法,我喜欢这个想法,但是IE的点击和点击,尤其是在windows phone上,这是一个更好的选择。无论如何,感谢您的输入,非常感谢这不是因为它没有使用名称空间设置,使用名称空间设置是为了防止开发人员在对象上的ID出现错误,也为了在对象上进行编码时启用intellisense。我不明白您所说的“不使用名称空间设置”是什么意思-他们在第二排。除非在标签前面加上名称空间,否则您的智能感知无法识别标签。字符串文字是使用变量访问对象属性的唯一方式。我只是认为添加['saveBtnId','cancelBtnId']会增加更多的范围和更多需要更正的内容,如果cancel按钮不再是cancel,客户会说,这会是一个保存,而save按钮是一个订单吗??你必须检查你的代码!!但也许是因为我从来没有见过它写得像这样,所以我不太明白你到底做了什么,它是如何工作的@davethecoder更改字符串与更改属性标签没有什么不同,只是在后一种情况下,您可能会从IDE的“重构”工具获得帮助。
['a',b']
的要点是通过不需要大量的连接(根据nnnn的回答),更容易更改受影响元素的列表。是的,我理解重新分解,你也理解