JQuery ForEach循环?

时间:2009-06-10 05:15:44

标签: javascript jquery

嘿,我怎么能说以下

我桌上的Foreach标签,当有人点击它时我想运行一个功能

如下所示:

ForEachTag.click  
(  
    function (e)   
    {  
    }  
) 

2 个答案:

答案 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)

嗯,这取决于你想怎么做。基本上,您有两种选择:

  1. 为与您的选择器匹配的每个代码添加点击监听器
  2. 添加父容器的单击侦听器,并找出在单击处理函数(事件委托)中单击的元素
  3. 要将相同的点击监听器添加到多个标签,请执行以下操作:

    $(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
    });
    

    如果可能,最好使用事件委派,因为它会绑定较少的侦听器,从而消耗更少的内存并提高执行速度,尤其是在旧版浏览器上。你可以在这里阅读一些关于事件授权的内容: