我需要在页面上的大多数链接中添加click事件。问题是我需要通过选择链接的容器而不是简单地$('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及其代码。
我想一种方法是选择属于该类的所有链接,然后在添加点击处理程序时将类添加到这些链接中?
答案 0 :(得分:1)
您可以用逗号分隔几个选择器:
$('.class1, .class2, .class3').each(function() { ... });
如果class1
是一个容器,您当然可以像这样访问a
标记:
$('.class1 a, .class2 a, ...')
答案 1 :(得分:0)
或
$('.container1, .container2, .container3').find('a').on('click',function(){
//link click handler
});
答案 2 :(得分:0)
在不知道所有要求的情况下,我会说选择所有A标签会更容易(或者在所有A标签上设置一个应该获得onlick并由之选择的类),然后在单击中获取父类事件与例如。 $(这).parent()。ATTRIB( “类”)。
给我som html和javascript,我会给你一个更直观的例子:)
答案 3 :(得分: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);
});