Javascript 为什么可以';我不能在单击时停止默认操作吗?

Javascript 为什么可以';我不能在单击时停止默认操作吗?,javascript,jquery,Javascript,Jquery,我有以下资料: $("#city-button-panel a") .click(function () { preventDefault(); var $link = $(this); getCityContentAjax($link); }); 但它不允许我使用默认值,它给出了一个语法错误 下面是深入城市按钮面板的元素的外观: <a href="/City/1555009O" id="btn-49">49</a> 您需要在传递事件时

我有以下资料:

$("#city-button-panel a")
    .click(function () {
    preventDefault();
    var $link = $(this);
    getCityContentAjax($link);
});
但它不允许我使用默认值,它给出了一个语法错误

下面是深入城市按钮面板的元素的外观:

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

您需要在传递事件时调用
preventDefault
。任何其他
preventDefault
都未定义或执行其他操作。尝试:

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

请注意,处理程序必须成功返回才能使
preventDefault
正常工作。如果
getCityContentAjax
引发异常,则如果不阻止异常传播,则无法阻止默认操作。但是,您可以这样做(如果您无法修复
getCityContentAjax
):

这段代码中没有语法错误。如果浏览器不这么认为,则代码前面可能有语法错误。注意,语法错误(括号不匹配等)和引用错误(全局范围内的函数不存在)之间存在差异。

这里是纯javascript(+html)版本


函数单击(url,ev){
getCityContentAjax(url);
ev.preventDefault();
}

将onclick=“return false”添加到标记中会阻止它吗?@technosaurus这不是理想的做法。这个属性应该是单独存在的。你确定它给了你一个语法错误吗?@JanDvorak有些项目不能被覆盖,只是在浪费时间编写代码之前快速检查一下情况是否如此我更新了我的问题。语法错误已解决,但当用户单击链接时,它仍尝试直接调用URL。现在没有语法错误,但它仍在执行操作并直接调用URL以及调用getCity。@Anne它对我有效:。也许
getCityContentAjax
会导致异常,从而阻止事件的发生?@Anne您能提供一个失败的测试用例吗?我愿意调查。非常感谢你的帮助。我觉得自己相当愚蠢,因为我从来没有在Javascrikpt中看到过try-catch。非常感谢你教我。@Anne所以有个例外?请注意,您应该删除原因,而不是捕获并放弃结果异常。与Java不同,Javascript不使用异常来表示异常状态。
$("#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
            }
        });
<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>