jquery在锚点上点击事件

时间:2011-03-26 15:59:28

标签: jquery events click href

以下是html的片段:

<div id="tag-cloud-widget">  
    <div class="content">  
        <a href="#" rel="1" class="cloud-element" data-tag-id="10" style="font-size: 12px; color: rgb(205, 236, 222); ">T1</a>  
        <a href="#" rel="1" class="cloud-element" data-tag-id="1" style="font-size: 12px; color: rgb(205, 236, 222); ">T2</a>  
        <a href="#" rel="1" class="cloud-element" data-tag-id="3" style="font-size: 12px; color: rgb(205, 236, 222); ">T3</a>  
    </div>
</div>

我想设置一个点击处理程序来响应用户点击锚标签。这是测试代码:

$("#tag-cloud-widget .content a").click(function(e) {
    alert('clicked');  
    return false;  
});  

上面的点击处理程序不会被触发,也不会:

$("#tag-cloud-widget .content .cloud-element").click(function(e) {  
    alert('clicked');  
    return false;  
});  

然而,

$("#tag-cloud-widget .content").click(function(e) { ... });  

$("#tag-cloud-widget").click(function(e) { ... });  

被解雇了!

我没看到什么?

4 个答案:

答案 0 :(得分:14)

处理锚定点击事件时,无论如何都要使用e.preventDefault();Fires like a charm

答案 1 :(得分:1)

!这是经过测试和运作的。

您忘记将代码放入文档就绪函数

$(function() {
//your code
});

答案 2 :(得分:0)

您的第一个代码无效的原因是因为div content标记中有多个锚点,因此当您将该标记中驻留的锚点与点击相关联时,会在选择精确锚点时产生歧义。您可以使用其id属性定位特定锚点,然后将id与您的事件相关联以定位特定锚点。所以代码如下。

<div id="tag-cloud-widget">  
    <div class="content">  
        <a href="#" rel="1" class="cloud-element" id="anca" data-tag-id="10" style="font-size: 12px; color: rgb(205, 236, 222); ">T1</a>  
        <a href="#" rel="1" class="cloud-element" id="ancb" data-tag-id="1" style="font-size: 12px; color: rgb(205, 236, 222); ">T2</a>  
        <a href="#" rel="1" class="cloud-element" id="ancc" data-tag-id="3" style="font-size: 12px; color: rgb(205, 236, 222); ">T3</a>  
    </div>
</div>

以下内容会将点击次数与特定锚点相关联。

$("#tag-cloud-widget .content #anca").click(function(e) {
    alert('Anchor A clicked');  
    return false;  
});

$("#tag-cloud-widget .content #ancb").click(function(e) {
    alert('Anchor B clicked');  
    return false;  
});

$("#tag-cloud-widget .content #ancc").click(function(e) {
    alert('Anchor C clicked');  
    return false;  
});

答案 3 :(得分:0)

document.ready内写下您的代码并使用e.preventDefault

写如下:

$(document).ready(function(){
    $("#tag-cloud-widget .content a").click(function(e) {
        e.preventDefault();
        alert('Clicked');  
        return false;  
    });
});