jquery将事件处理程序绑定到包含element的多个元素

时间:2015-01-21 11:59:46

标签: javascript jquery

我想使用jQuery将事件处理程序绑定到多个元素(包含元素self.el)。

以下代码是否正确?

$("input", "textarea", "select", self.el).on("keyup", function(e) {
                    if($.keys[e.keyCode] != "TAB") {
                        self.callChangeAction(e);
                    }
                })

3 个答案:

答案 0 :(得分:1)

$(self.el).on("keyup", "input, textarea, select", function(e) {
    if ($.keys[e.keyCode] != "TAB") {
        self.callChangeAction(e);
    }
})

答案 1 :(得分:0)

处理输入事件,textareas,选择AND self.el:

$("input, textarea, select").add(self.el).on(...)

处理输入事件,textareas,选择CONTAIN self.el(这没有多大意义):

$("input, textarea, select").has(self.el).on(...)

处理输入,textareas上的事件,在开头选择INSIDE self.el:

$("input, textarea, select", self.el).on(...)
//alternative: 
$(self.el).find("input, textarea, select").on(...)

处理任何输入,textareas上的事件,选择在事件发生时INSIDE self.el:

$(self.el).on(events, "input, textarea, select", ...)

答案 2 :(得分:0)

如果您希望将事件处理程序绑定到所有元素,而不是选择器列表,则应使用单个逗号分隔选择器:

$('select,input,textarea', self.el).on(...)

本身只是.find的简写:

$(self.el).find('select,input,textarea').on(...)

或者,假设您希望捕获的事件是"冒泡",您可以使用事件委派,其中父元素代表所有人捕获事件其子代,然后jQuery检查事件发生的实际元素,以确定它是否是你想要的那个:

$(self.el).on('keyup', 'select,input,textarea', ...);