Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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上使用变量吗_Jquery_Variables_Click - Fatal编程技术网

我可以在Jquery上使用变量吗

我可以在Jquery上使用变量吗,jquery,variables,click,Jquery,Variables,Click,我在一个div中有3个按钮,我想将相同的click侦听器添加到所有按钮中。我在这些按钮上有一些操作,所以我首先将它们作为变量保存在函数的请求中,然后我想使用这些变量添加on侦听器。有办法吗? HTML如下所示: <div class="wrapper"> <button class="a"></button> <button class="b"></button> <button class="c">

我在一个div中有3个按钮,我想将相同的click侦听器添加到所有按钮中。我在这些按钮上有一些操作,所以我首先将它们作为变量保存在函数的请求中,然后我想使用这些变量添加on侦听器。有办法吗? HTML如下所示:

<div class="wrapper">
    <button class="a"></button>
    <button class="b"></button>
    <button class="c"></button>
</div>
使用add函数

$aBtn.add($bBtn,$cBtn).on('click', func);
您可以使用
.add()
/
var$wrapper=$('.wrapper'),
$aBtn=$wrapper.find('.a'),
$bBtn=$wrapper.find('.b'),
$cBtn=$wrapper.find('.c');
//我想要什么
$($aBtn).add($bBtn).add($cBtn).on('click',func));
函数func(){alert($(this).attr(“class”)}

A.
B
C

以下代码不使用变量,但有时您可以简单地在包装多个元素的选择器上绑定事件

$('.wrapper button').on('click', func);
有了这段代码,每个按钮都附加了一个事件处理程序。 当您单击某个元素时,该引用将与此JSFIDLE中显示的元素类似:

作为变量的替代,您甚至可以链接事件处理程序

$('.wrapper button').on('click', func).on('blur', func);
var$wrapper=$('.wrapper'),
$aBtn=('.wrapper.a'),
$bBtn=('.wrapper.b'),
$cBtn=('.wrapper.c');
//有效但不太整洁的解决方案
//$('.wrapper.a、.wrapper.b、.wrapper.c')。在('click',func');
//我想要什么
$($aBtn+”、“+$bBtn+”、“+$cBtn.)。在('click',func');
函数func(){
警报($(this).text())
}

1.
2.
3.

注意:
add
接受多个参数,并且在开始时不需要使用
$()
add
返回一个新对象,它不会修改它的调用):
$aBtn.add($bBtn).add($cBtn).on(…)
非常正确,这只是一个老习惯:)对于我描述的特定问题,这可能是一个很好的解决方案,但如果在包装下有更多的按钮,而您不希望侦听器附加到这些按钮,则必须为这些按钮指定一个新类。但我完全明白你的意思。@LilacEilim:的确。我通常将处理程序附加到具有特定data-*属性的元素上(很少使用带有js-*前缀的特定类)
$('.wrapper button').on('click', func).on('blur', func);