1

我需要为页面上的大多数链接添加点击事件。问题是我需要通过选择链接的容器而不是简单地来做到这一点$('a'),因为我需要使用容器的类作为一个或单击处理程序调用中的参数。

我只想拥有一个可以使用 .each 迭代并绑定处理程序的大型集合。至少会有几十个不同的容器,那么有没有办法在没有很长的字符串$(class1).add(class2).add(class3)等的情况下做到这一点?

该页面上有许多块和部分。当在用户定义为逻辑块/部分的任何内容中单击链接时,需要传递代码。在一种情况下,代码可能是包含标签链接列表的容器,因此所有标签都将具有 [great[grand]] 父级和相同的代码。容器必须携带代码而不是链接的原因是它是一个动态站点,并且该块/区域的内容可以随时由编辑器更改,因此它是该块在屏幕上的位置这决定了代码,而不是其中的内容。所以当页面加载时,容器(部分/块)是已知的,它们的代码应该是什么。他们不知道他们的内容(我也是),链接也不知道他们的容器。

[我向谁添加了我在尝试删除我的回复时不小心删除的评论表示歉意]

<div class="code1">
  <div>
    <h2>title</h2>
  </div>
  <div>
    <ul>
       <li><a>link1</a></li>
       <li><a>link2</a></li>
    </ul>
  </div>
</div>
<div class="code2">
  <div>
    <img>
    <p></p>
    <a>text</a>
  </div>
  <div>
    <a><img></a>
  </div>
</div>

所以在这种情况下,您可以看到这两个部分的结构除了包含链接之外没有任何共同之处。我控制围绕具有类的容器创建 html。这些容器的内容是完全动态的,事实上,第一个的内容很容易变成第二个的内容,唯一保持不变的是 div 及其代码。

我想一种方法是选择该类下方的所有链接,然后在添加点击处理程序时将该类添加到这些链接中?

4

4 回答 4

1

您可以用逗号分隔多个选择器:

$('.class1, .class2, .class3').each(function() { ... });

如果class1是一个容器,你当然可以a像这样访问标签:

$('.class1 a, .class2 a, ...')
于 2012-10-01T12:44:47.113 回答
0

或者

$('.container1, .container2, .container3').find('a').on('click',function(){
   //link click handler
});
于 2012-10-01T12:46:08.500 回答
0

在不知道所有要求的情况下,我会说选择所有 A 标签会更容易(或者在所有应该获得 onlick 的 A 标签上设置一个类并通过它选择),然后在点击事件中获取父类,例如. .$(this).parent().attrib("class")。

给我 som html 和 javascript,我会给你一个更直观的例子 :)

于 2012-10-01T12:46:48.670 回答
0

如果不绑定单个事件或让锚知道它的特殊父级,可能很难获得你需要的类。不过,您可以使用事件目标来判断点击了什么:

$(".class1, .class2, .class3").click(function (e) {
   if (e.target.nodeName !== 'A') { return; }
   var cl = $(this).attr('class');
   //do whatever you want with $(e.target);
});

现场示例:http: //jsfiddle.net/k2VuG/

于 2012-10-01T12:50:15.510 回答