0

假设我有:

如果(事件 X 发生在元素 A 上)执行代码 R

如果(事件 Y 发生在元素 B 上)执行代码 R

在 jQuery 中,而不是 2 个 if 语句,你如何拥有 1 个 if 语句:

如果(事件 X 发生在元素 A)或(事件 Y 发生在元素 B)执行代码 R

我一直在研究绑定方法,但一直找不到解决方案。这就像谷歌的搜索功能:如果你点击“搜索”按钮,它就会执行搜索。但是,如果您在输入框中键入内容并按“回车”键,它也会执行搜索。同样,两个不同的元素(按钮和输入框),两个不同的事件(鼠标单击和按键),但功能相同(搜索)?

4

3 回答 3

3

您的最终代码中不会有任何if语句。您必须将每个事件的事件处理程序绑定到每个元素,事件处理程序当然可以是同一个函数:

function event_handler() {
    // ...
}

$(elementA).on('eventX', event_handler);
$(elementB).on('eventY', event_handler);

我建议阅读 jQuery 教程:http ://docs.jquery.com/Tutorials 。

要了解有关事件处理的更多信息,请查看以下文章:http ://www.quirksmode.org/js/introevents.html 。

于 2013-01-03T14:25:48.563 回答
0

您可以使用多个用逗号分隔的 jQuery 选择器(如 CSS 选择器)。生成的 jQuery 对象列表将包含所有这些对象。

.bind()如果您使用or.on()并将第一个参数设置为由空格分隔的事件名称列表,则允许在 jQuery 中绑定多个事件。

function handler_function (e) {
    e.target // contains the element that triggered the event (which was clicked for ex.)
    e.type // contains the event type that triggered the event
    e.keyCode // contains a number representing the key that has been pressed (if any)
}
$('button#button_id, input[type=text]#input_box')
    .bind('keyup click hover touch drag drop', handler_function);
于 2013-01-03T14:29:09.070 回答
0

您需要向两个事件/元素组合添加相同的功能:

$('#elementA').on('click', myEventHandler);
// You can specify multiple Events:
$('#elementB').on('mousedown mouseup blur', myEventHandler);
// Or specify multiple elements:
$('#elementB, #elementC').on('click', myEventHandler);

function myEventHandler(e){
    console.log(e.type); // Event type ('mousedown', 'mouseup' etc)
    console.log(this);  // The element that triggered the event.
    // Do stuff.
}

但是您不能在1 行中click绑定'#elementA' 和绑定。 mousedown'#elementB'

所以,不,没有“单线” jQuery 函数可以将多个不同的事件绑定到不同的元素。

基本上,看看 jQuery 的.on()

于 2013-01-03T14:26:24.833 回答