Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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
Javascript 如何在if语句中使用多个元素、多个事件和相同的函数_Javascript_Jquery - Fatal编程技术网

Javascript 如何在if语句中使用多个元素、多个事件和相同的函数

Javascript 如何在if语句中使用多个元素、多个事件和相同的函数,javascript,jquery,Javascript,Jquery,假设我有: 如果(事件X发生在元素A上) 执行代码R 如果(事件Y发生在元素B上) 执行代码R 在jQuery中,如何使用1 if语句代替2 if语句,从而: 如果(事件X发生在元素A上)或(事件Y发生在元素B上) 执行代码R 我一直在研究bind方法,但还没有找到解决方案。这就像谷歌的搜索功能:如果你点击“搜索”按钮,它就会执行搜索。但是,如果您在输入框中键入内容并按“回车”键,它也会执行搜索。同样,两个不同的元素(按钮和输入框)、两个不同的事件(鼠标单击和按键),但功能相同(搜索)?如果最终

假设我有:

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

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

在jQuery中,如何使用1 if语句代替2 if语句,从而:

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


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

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

function event_handler() {
    // ...
}

$(elementA).on('eventX', event_handler);
$(elementB).on('eventY', event_handler);
我建议您阅读jQuery教程:


要了解有关一般事件处理的更多信息,请参阅以下文章:

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

function event_handler() {
    // ...
}

$(elementA).on('eventX', event_handler);
$(elementB).on('eventY', event_handler);
我建议您阅读jQuery教程:


要了解有关一般事件处理的更多信息,请参阅以下文章:

您需要将相同的函数添加到两个事件/元素组合中:

$('#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.
}
但是您不能将
单击
绑定到
'elementA'
并将
鼠标向下
绑定到
'elementB'
的1行中

因此,不,没有“一行”jQuery函数将多个不同的事件绑定到不同的元素


基本上,

您需要将相同的函数添加到两个事件/元素组合中:

$('#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.
}
但是您不能将
单击
绑定到
'elementA'
并将
鼠标向下
绑定到
'elementB'
的1行中

因此,不,没有“一行”jQuery函数将多个不同的事件绑定到不同的元素


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

如果使用
.bind()
.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);

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

如果使用
.bind()
.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);

你为什么这么说
$(“#selector1,#selector2”)
选择这两个元素,并
.bind('event1 event2',handler)
将处理程序绑定到这两个事件。@MihaiStancu:添加了一些澄清OK,这更有意义,实际上没有一个行程序像这样。您可以使用我提供的代码并添加一些逻辑(
if
/
开关
)来检查创建事件的对象类型(
e.target
)和事件类型(
e.type
),并决定要做什么。您为什么这么说
$(“#selector1,#selector2”)
选择这两个元素,并
.bind('event1 event2',handler)
将处理程序绑定到这两个事件。@MihaiStancu:添加了一些澄清OK,这更有意义,实际上没有一个行程序像这样。您可以使用我提供的代码并添加一些逻辑(
if
/
switch
)来检查创建事件的对象类型(
e.target
)和事件类型(
e.type
),并决定要做什么。哦,在jQuery的事件处理程序中,您应该能够使用
this
,而不是
e.target
。是的,但是研究
事件
对象很重要,所以我会更频繁地提升它。@Cerbrus是否有任何情况下
可能不会附加到任何对象上?或者可以非直观地附加?我想
mousemove
事件会将其附加到
body
对象。我通常使用原生JS,因此,恐怕没有线索。编辑:实际上:
$(“#answer-14140858”).on('mousemove',function(){console.log(this)})
记录您的答案,而不是
主体
对象。哦,在jQuery的事件处理程序中,您应该能够使用
this
而不是
e.target
。是的,但是研究
事件
对象很重要,所以我会更频繁地提升它。@Cerbrus是否有任何情况下
可能不会附加到任何对象上?或者可以非直观地附加?我想
mousemove
事件会将其附加到
body
对象。我通常使用原生JS,因此,恐怕没有线索。编辑:实际上:
$(“#answer-14140858”).on('mousemove',function(){console.log(this)})
记录您的答案,而不是
主体
对象。