And*_*ech 52 javascript jquery events
说我有以下内容:
var a = $("#a");
var b = $("#b");
//I want to do something as such as the following :
$(a,b).click(function () {/* */}); // <= does not work
//instead of attaching the handler to each one separately
Run Code Online (Sandbox Code Playgroud)
显然上面的方法不起作用,因为在$函数中,第二个参数是context,而不是另一个元素.
那么如何一次性将事件附加到两个元素上呢?
[更新]
peirix发布了一个有趣的片段,其中他将元素与&符号结合在一起; 但我注意到了这一点:
$(a & b).click(function () { /* */ }); // <= works (event is attached to both)
$(a & b).attr("disabled", true); // <= doesn't work (nothing happens)
Run Code Online (Sandbox Code Playgroud)
从上面你可以看到的,显然,与&标志的组合只有在附加事件时才有效......?
Gar*_*eth 88
该jQuery的添加方法是你想要什么:
将更多元素(由给定表达式匹配)添加到匹配元素集
var a = $("#a");
var b = $("#b");
var combined = a.add(b)
Run Code Online (Sandbox Code Playgroud)
hob*_*bbs 38
不要忘记jQuery选择器支持CSS逗号语法.如果您需要任意两个集组合,其他人的建议是上的标记,但如果它是为做一些与标识元素的简单a和b,使用$('#a,#b').
The*_*Man 16
这个问题已经得到了解答,但我认为更简单,更简化的方法来实现同样的目的是依靠jQuery和CSS的选择器模型之间的相似性,并且只做:
$("#a, #b").click(function () {/* */});
Run Code Online (Sandbox Code Playgroud)
我经常使用它,从来没有看到它不起作用(我不能说1.3.2之前的jQuery版本,虽然我没有在那里测试过).希望有一天这会帮助某人.
更新:我刚刚重读了这个帖子,并且错过了你对有问题的节点已经保存到变量的评论,但这种方法仍然有效,只需要一个小小的调整.你会想做:
var a = $("#a");
var b = $("#b");
$(a.selector+", "+b.selector).click(function () {/* */});
Run Code Online (Sandbox Code Playgroud)
jquery所做的一件很酷的事情就是它向它返回的节点添加了一些jquery特定的属性(selector,它是用来抓取该节点的原始选择器之一).如果您使用的选择器已包含逗号,则可能会遇到一些问题.它也可能是有争议的,如果这比使用add更容易,但它是一个有趣的例子,如何很酷的jquery :).
你可以把它们放在一个数组中:
$.each([a, b], function()
{
this.click(function () { });
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38754 次 |
| 最近记录: |