嘿,我怎么能说以下
我桌上的Foreach标签,当有人点击它时我想运行一个功能
如下所示:
ForEachTag.click
(
function (e)
{
}
)
答案 0 :(得分:5)
如果您有这样的表:
<table id='test'>
<tr>
<td><a href="#">test</a></td>
<td>Hi</td>
</tr>
<tr>
<td><a href="#">test1</a></td>
<td>Hi</td>
</tr>
</table>
最基本的选择器将如下所示:
$('a').click(function(e) {
alert('test!');
return false;
});
这只是简单地将某些内容绑定到所有文档中的链接。想要更多控制权?
$('#test').find('a').click(function(e) {
alert('test!');
return false;
});
本质上是这样说:“找到id为<a>
的元素内的所有test
元素并将此单击处理程序绑定到它” - jQuery非常强大,因为它处理了这些对象集方式。
但这只是冰山一角!你可以得到更深入的了解。如果您只想绑定<a>
相对于<td>
的{{1}}元素,该怎么办?没问题:
<tr>
虽然jQuery确实有$('#test').find('td:nth-child(1) a').click(function(e) {
alert('test');
return false;
});
函数可以让你遍历一组元素,但是当涉及到绑定事件时,你很少需要它。如果它有任何意义,jQuery喜欢集合并会对你要求的任何内容做任何事情。
答案 1 :(得分:0)
嗯,这取决于你想怎么做。基本上,您有两种选择:
要将相同的点击监听器添加到多个标签,请执行以下操作:
$(selectorForElements).click(function (e) {
// Click handling code here.
// e is the event object
// this inside the handler refers to the element that was clicked.
});
要使用event delegation,请执行以下操作:
$(selectorForParentElement).click(function (e) {
var target = $(e.target());
// Checked if we clicked the "correct" element, else traverse
// up the DOM tree until we find the parent element we ARE interested in.
if(!target.is(whatYouAreInterestedIn)) {
target = target.parent(whatYouAreInterestedIn).eq(0);
}
// Your click handler for the target goes here
});
如果可能,最好使用事件委派,因为它会绑定较少的侦听器,从而消耗更少的内存并提高执行速度,尤其是在旧版浏览器上。你可以在这里阅读一些关于事件授权的内容: