【问题标题】:Page refreshes during JQuery callJQuery 调用期间的页面刷新
【发布时间】:2011-07-09 12:03:59
【问题描述】:

由于某种原因,当进行此 JQuery 调用时,页面会刷新。我被引导相信 JQuery 函数末尾的 return false; 会导致页面不重新加载,但显然情况并非如此?这是我的精简代码:

$(function() {
    $(".vote").click(function() {
        return false;
    });
});

当我点击投票按钮时,页面会刷新。我知道正在调用此代码,因为如果我将 return false 替换为 alert('asdf');,则会出现警报。

【问题讨论】:

  • 是表单标签内的.vote 元素吗?
  • “投票”按钮里面是什么? (它是<button> 还是<input type='button'>
  • 如果您在按钮上使用type="submit",请尝试使用type="button"
  • 发布您的投票代码 html..我的意思是投票可能是某些 html 权利的类名
  • <a href="" class="vote" id="<?php echo $rowID; ?>" name="up"><div class="upvote" id="upvote<?php echo $rowID; ?>" style=<?php echo "$upvote"; ?>></div></a>

标签: javascript jquery refresh


【解决方案1】:

您不能将div 放在a 中:div 是块级元素,a 是内联元素,并且 HTML 不允许内联元素内的块元素。浏览器会尝试通过以某种方式重新排列 DOM 树来自动更正此问题(例如,<a><div></div></a> 可能会以 <a></a><div><a></a></div><a></a> 结尾);这会导致各种有趣的行为。在 Firefox 中,您可以使用“查看选择源”(当然也可以使用 Firebug)来检查发生了什么。

【讨论】:

    【解决方案2】:

    试试这个:

    $(function() {
      $(".vote").click(function(e) {
        e.preventDefault();
      });
    });
    

    【讨论】:

    • 我试过了,但页面仍然在刷新。我也尝试将return false; 附加到末尾,但仍然没有好处。有什么想法吗?
    • 我的猜测是您的 javascript 中的其他地方有错误 - 在 Firefox 中打开页面并打开错误面板,查看其他行是否引发错误。要么 return false 要么 preventDefault 应该处理它,但如果其他地方有错误,你的整个 JS 块都会失败。
    【解决方案3】:

    通常当你想阻止链接被关注或表单提交时,你想告诉事件 preventDefault():

    $('a').click(function(e){
        e.preventDefault();
    });
    

    【讨论】:

    • 但他正在做 return false,这将做 e.preventDefault 和 stopPropogatoin..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多