0

我有以下内容:

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

但它不允许我 preventDefault 并且它给出了一个语法错误

以下是#city-button-panel 深处的元素的样子:

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

2 回答 2

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
            }
        });

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

于 2012-12-02T08:16:42.900 回答
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>
于 2012-12-02T09:20:10.363 回答