jQuery选择具有公共类的所有元素

时间:2012-02-11 03:18:01

标签: javascript jquery

我想在一组链接中处理点击事件,因此尝试通过添加如下的辅助类来解决此问题:

<a href="..." class="foo external">Test 1</a>
<a href="..." class="bar external">Test 2</a>
<a href="..." class="car external">Test 3</a>
<a href="..." class="dar">Don't handle this one</a>

然后尝试使用此jquery选择器在链接上选择“外部”类:

$('a.external').click(function(e) {
    do something here...
});

然而,这并不像我预期的那样有效。处理这个问题的正确方法是什么?我应该只使用如下的通配符选择器,还是有更好的方法?

$('[class^="someclass"]').click(function(e) {
 ....
});

4 个答案:

答案 0 :(得分:2)

你所拥有的是完全正确的(尽管在你的情况下function(e)可能没有必要)。

<a href="#1" class="foo external">Test 1</a>
<a href="#2" class="bar external">Test 2</a>
<a href="#3" class="car external">Test 3</a>
<a href="#4" class="dar">Don't handle this one</a>

<script>
    $('a.external').click(function(e) {
        // will print the href in a javascript alert box
        alert( $(this).attr('href') );
    });
</script>

据我所知,唯一的可能是你的<script>实际上高于你的<a>标签 - 你的脚本无法将点击监听器添加到锚点,因为它们不存在然而。 如果是这样,您需要在$(document).ready( function(){ /* code here */ });

中包装javascript

此外,不需要external类,只需使用“选择所有绝对锚点,而不是链接到我的域名的选择器”选择器:$('a[href^="http://"]').not('[href^="http://mydomain.com"]')

答案 1 :(得分:2)

我猜你的问题是点击链接实际上是让它导航到某个地方?您需要告诉浏览器忽略正常的链接行为。否则,您的点击功能将运行,然后它将立即导航到'href'网址。还要确保这一切都包含在准备好的功能中。

$(function() {
  $('a.external').click(function(e) {
    // Do whatever        

    e.preventDefault();
  });
});

答案 2 :(得分:1)

我在jsFiddle尝试了它,但它确实有效。

click()函数有一个额外的括号。 请注意,您的function(e)有一个紧密的括号,删除它。

你应该最终得到这个:

$('a.external').click(function(e) {
    do something here...
});

答案 3 :(得分:0)

尝试:http://jsfiddle.net/n6JJ3/

$('a.external').click(function() {
    jQuery(this).css('background','red');
});​
相关问题