使用$(this)获取被点击的元素

时间:2012-05-23 19:23:27

标签: javascript jquery

嘿,我有这个愚蠢的问题,我希望你能帮助我解决它。我有一些“a”元素,我只想在点击时添加一个活动类。

我试过了:

<a href="javascript:mifunction()"></a>

js:
function mifunction(){
 $(this).addClass('active');
}

但它不起作用,所以我尝试了这个:

<a></a>

js:
$('a').click(function() {
  $(this).addClass('active');               
});

它也不起作用。当我混合两者时它才起作用。但是用户必须点击该元素,这不是一个选项:

<a href="javascript:mifunction()"></a>
js:

function mifunction(){
 $('a').click(function() {
   $(this).addClass('active');              
 });
}

你知道如何解决这个问题吗?

非常感谢!

4 个答案:

答案 0 :(得分:3)

这是你的第二个例子:

可能需要将jQuery代码包装在:

$(function() {

  $('a').click(function() {
     $('a.active').removeClass('active'); // you may also want to remove previous
     $(this).addClass('active');               
  });

});

还要确保在HTML中包含jQuery库路径:

<script type="text/javascript" src="/path/jQuery.min.js"></script>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

编辑:

(动态添加链接)

$(function() {

  $('a').on( 'click', function() {
     $('a.active').removeClass('active'); // you may also want to remove previous
     $(this).addClass('active');               
  });

});

答案 1 :(得分:2)

您正在混合和匹配使用DOM和JavaScript的新旧方法。

$('a').click(function() {
    $(this).addClass('active');
}

应该可以正常工作。

只需将其放入$(document).ready(function() {});

即可

所以..从字面上看它应该是这样的:

<script type="text/javascript">
    $(document).ready(function() {
        $('a').click(function() { 
            $(this).addClass('active');
        });
    });
</script>
<a>Click me</a>



另外,如果你只想尝试...你可以通过CSS来做 对于活跃:a:active { color: orange; }
已访问:a:visited { color:green; }

答案 2 :(得分:2)

你的问题必须存在于其他地方,因为这样可以正常工作:

$('a').click(function () {
   $(this).addClass('active'); 
});​

如果要动态创建锚点,则应使用.on()代替:

$('#container').on('click', 'a', function () {
    $(this).addClass('active'); 
});

.on()的示例:http://jsfiddle.net/jbabey/bqgFN/1/

.on()的文档:http://api.jquery.com/on/

答案 3 :(得分:1)

尝试如下所示,

<a class="link" href="javascript:void(0)"></a>

$(function () {
   $('.link').click (function () {
      $(this).addClass('active');
   });
});