“on”preventDefault

时间:2012-03-14 08:10:03

标签: jquery jquery-mobile event-handling

我在这里缺少什么?

请注意:使用jQuery MOBILE

如果我使用的是preventDefault,那么页面加载就好像我只有链接而没有脚本一样,当我改为返回false(我总是习惯在普通的JS onclick事件处理程序上使用)时,它按预期工作。 我已经查看了其他帖子,并且都使用了.click,并建议使用preventDefault。

$(document).ready(function() {
  $("#leftdiv a").on("click",function(e) {
    $("#rightDiv").load(this.href);
    return false; // I was sure preventDefault would work
  });
});

HTML

<div id="leftdiv" style="position:absolute;padding-right:5%; overflow:scroll;">
<a href="page1.htm">Launch page 1</a><br />
<a href="page2.htm">Launch page 2</a>
</div>

<div id="rightDiv" style="padding-left:30%"></div>

1 个答案:

答案 0 :(得分:0)

这可能提供解决方案,但我缺乏解释原因的信息。 我最近遇到了一个问题,即preventDefault没有在类似的代码中工作,问题在于从$(document) vs $('body')委派代码尝试以下内容:

<a href="http://stackoverflow.com" id="test1">Test 1</a>
<a href="http://stackoverflow.com" id="test2">Test 2</a>
<script>
    $('body').on('click', '#test1', function(e) {
        e.preventDefault();
        alert('hi 1');
    });

    $(document).on('click', '#test2', function(e) {
        e.preventDefault();
        alert('hi 2');
    });
</script>

然而,对于jQuery 3.2.1,这不会发生,我只能确认这是2.1.7的问题