尝试阻止默认单击并运行函数

时间:2011-08-02 03:29:18

标签: jquery javascript-events preventdefault

我对JS和jQuery很陌生,而且我已经掌握了基本的JS以便在jQuery中尝试一些东西。因此,我在这里尝试做的是在单击主导航中的链接时阻止页面加载(理想情况下,将使用ajax加载页面)。

所以这是我的脚本到目前为止,基本上没有任何工作......在Chrome中,警报显示并显示被点击的链接,但FF4似乎完全忽略了我的脚本(firebug控制台没有显示任何内容)。 / p>

感谢任何帮助。

$(document).ready(function(){
$("#navigation a").each(function() {
    $(this).click(function(){
        event.preventDefault();
        loader();
    });
});

});

function loader(){
theLink = event.target;
alert("You clicked: " + theLink);
}

4 个答案:

答案 0 :(得分:2)

尝试将代码更新为此

$(document).ready(function(){
    $("#navigation a").click(function(event){
        event.preventDefault();
        loader(event);
    });
});

function loader(event){
    var theLink = event.target;
    alert("You clicked: " + theLink);
}

答案 1 :(得分:2)

$(document).ready(function(){
    $("#navigation a").click(function(event){
            event.preventDefault();
            loader(event);
        });                

    function loader(event){
    theLink = event.target;
    alert("You clicked: " + theLink);
    }
});

答案 2 :(得分:1)

您没有将事件对象传递给Click处理程序。此外,您不需要.each(),因为.click()将枚举您的查询结果并为每个人附加点击处理程序

尝试将其调整为:

$(document).ready(function(){
    $("#navigation a").click(function(e) {
            e.preventDefault();
            loader(e);
        });
    });
});

function loader(e){
    theLink = e.target;
    alert("You clicked: " + theLink);
}

答案 3 :(得分:-1)

尝试在点击功能结束时添加return false

 $(this).click(function(){
        event.preventDefault();
        loader();
        return false;
    });

并阅读此event.preventDefault() vs. return false