为什么我不能停止点击的默认操作?

时间:2012-12-02 08:14:36

标签: javascript jquery

我有以下内容:

$("#city-button-panel a")
    .click(function () {
    preventDefault();
    var $link = $(this);
    getCityContentAjax($link);
});

但是它不允许我阻止默认并且它会产生语法错误

以下是#city-button-panel内部的元素:

<a href="/City/1555009O" id="btn-49">49</a>

2 个答案:

答案 0 :(得分:2)

您需要在传递的事件上致电preventDefault。任何其他preventDefault未定义或执行其他操作。尝试:

$("#city-button-panel a")
        .click(function (event) {
            event.preventDefault(); 
            var $link = $(this);
            getCityContentAjax($link);
        });

演示:http://jsfiddle.net/vatjK/

请注意,处理程序必须成功返回才能使preventDefault正常工作。如果getCityContentAjax抛出异常,则在不阻止异常传播的情况下也无法阻止默认操作。但是,您可以执行此操作(如果无法修复getCityContentAjax):

$("#city-button-panel a")
        .click(function (event) {
            event.preventDefault(); 
            var $link = $(this);
            try{
                getCityContentAjax($link);
            }catch(e){
                console && console.error(e);
                alert("Look at the console!!!"); // optional
            }
        });

这段代码中没有语法错误。如果浏览器另有考虑,则在代码之前可能会出现语法错误。请注意,语法错误(不匹配的括号等)与引用错误(全局范围内的函数不存在)之间存在差异。

答案 1 :(得分:0)

这里是普通的javascript(+ html)版本

<head>
  <script>
     function theClick(url,ev){
       getCityContentAjax(url);
       ev.preventDefault();
     }
  </script>
</head>

<body>
  <a onclick="theClick(this,event)" href="url.html">a link</a>
</body>