【问题标题】:jQuery replaceWith replace div causes reloadjQuery replaceWith replace div 导致重新加载
【发布时间】:2011-12-13 08:34:29
【问题描述】:

我正在使用 jQuery replaceWith 将可见的 <div> 替换为另一个。但是由于某种原因,当我单击链接以启动替换时,页面重新加载并导致原始<div> 再次出现。这是我的 jQuery:

$(function(){
    $("a#startSlide").click(function () {
        $('div#leftText').replaceWith('div#slide');
    });
});

为什么这个div被替换后会重新加载?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    你需要取消该事件,因为锚点点击的默认事件是改变窗口位置:

    $(function(){
        $("a#startSlide").click(function (event) {
            event.preventDefault();
            $('div#leftText').replaceWith('div#slide');
        });
    });
    

    【讨论】:

    • 不会返回 false 做同样的事情吗?
    • 我不想返回 false。代码的意图并不明显暗示代码的行为,而 event.preventDefault() 完全按照它所说的那样做,新手开发人员不必猜测它试图做什么。
    • return false 不会阻止您的示例触发。它的两个绑定。
    • @AlienWebguy:我有一个与 tvalent2 类似的问题,除非我使用 preventDefault 它不会做任何事情。我的代码如下: var html =
      $('#container').replaceWith(html);在
      的脚本标签内
    【解决方案2】:

    您的<a> 标签可能有一个href="#"。这会在单击时重新加载页面。

    当你绑定你的事件处理程序时,你需要取消你的默认行为:

    $(function() {
        $('a#startSlide').click(function() {
            $('div#leftText').replaceWith('div#slide');
    
            return false;
            //equivalent to:
            //  e.preventDefault();
            //  e.stopPropagation();
        });
    });
    

    或者,您可以将<a> 标签更改为href="javascript:void()"

    【讨论】:

      【解决方案3】:

      您需要返回 false 或 preventDefault()。

      $(function(){
          $("a#startSlide").click(function (e) {
              e.preventDefault();
              e.stopPropagation();
              $('div#leftText').replaceWith('div#slide');
          });
      });
      

      $(function(){
          $("a#startSlide").click(function (e) {
              $('div#leftText').replaceWith('div#slide');
              return false;
          });
      });
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2014-06-22
      相关资源
      最近更新 更多