在事件委派中传递 jQuery 对象
Passing a jQuery object in event delegation
// Snippet 1
$(document).on("keyup blur", "#selector_1_id", function() {
// DO SOMETHING
});
$(document).on("keyup blur", "#selector_2_id", function() {
// DO SOMETHING
});
// Snippet 2
var selector_1_id = $("input[name=selector_1_id]");
var selector_2_id = $("input[name=selector_2_id]");
$(document).on("keyup blur", selector_1_id, function() {
// DO SOMETHING
});
$(document).on("keyup blur", selector_2_id, function() {
// DO SOMETHING
});
为什么这些代码段的行为似乎有所不同?虽然第一个实际上看起来很理想,但实际上在 keyup 和 blur 事件时,键控和模糊实际上应用于选择器,而另一个似乎工作得并不理想,它的行为就像代码片段始终运行一样。
我正在使用JavaScript在实时网站上启用和禁用输入类型。
你不能像这样通过该函数传递元素,它必须是string
选择器。
$(document).on("keyup blur", selector_2_id, function() {
// DO SOMETHING
});
不起作用,实际上每次都会在文档而不是选择器上触发keyup
和blur
如果你在变量中有元素,则没有必要这样做,因为无论如何你都有对该元素的引用,你只有在可以随时添加元素并且你没有对它的引用时才使用它。
所以
selector_2_id.on('keyup blur', function() {
// DO SOMETHING
});
应该完美地工作。
更深入的观察
一个选择器字符串,用于筛选触发事件的选定元素的后代。如果选择器为 null 或省略,则在到达所选元素时始终触发事件。
所以这意味着这个
$(document).on('keyup blur', selector_2_id, function(){
^------^ = 1 ^-----------^ = 2
});
如果 2 null
或omitted
则 1 将用于event
根据 api,选择器需要是一个字符串而不是一个 jquery 对象
选择器类型:字符串 - 用于筛选其后代的选择器字符串 触发事件的选定元素。如果选择器为空 或省略,事件在到达所选时始终触发 元素。
http://api.jquery.com/on/
我相信
这就是您要做的:
// Snippet 2
var selector_1_id = "input[name=selector_1_id]";
var selector_2_id = "input[name=selector_2_id]";
$(document).on("keyup blur", selector_1_id, function() {
// DO SOMETHING
});
$(document).on("keyup blur", selector_2_id, function() {
// DO SOMETHING
});
以上将起作用(传递字符串 var 作为选择器(,但为什么不只是:
$(document).on("keyup blur", "input[name=selector_1_id]", function() {
// DO SOMETHING
});
$(document).on("keyup blur", "input[name=selector_2_id]", function() {
// DO SOMETHING
});
。除非您有一个更大的上下文来创建此字符串或对其进行某些操作。
相关文章:
- 将jQuery对象传递到setTimeout递归函数中
- jQuery:对象不是函数
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- 检查对象是否基于jquery对象
- 如何在几个jQuery对象上调用jQuery函数
- 将Javascript函数链接到返回jQuery对象的jQuery函数
- 如何正确地将jquery插件添加到webpack中的jquery对象中
- 用jquery post发送jquery对象
- 如何创建jQuery插件来缓存jQuery对象,如下所示
- 从主体分离时,jQuery对象scrollTop(值)
- 创建jQuery对象时出现问题
- 获取随机jQuery对象的属性
- 在 javascript