防止链接加载模态窗口

时间:2017-01-14 19:15:33

标签: javascript jquery html ajax twitter-bootstrap

我有一个链接列表,点击后应该打开一个带有一些信息的模态窗口。我正在使用e.preventDefault();来阻止浏览器的默认操作,然后添加我自己的自定义代码以在模式中加载我自己的数据。内容加载得很好,但几秒钟后,我点击链接的整个网站都被加载到模态中。

  1. 只有来自特定网站的链接才会发生。
  2. 该网站的链接应该是我点击的第一个链接。点击其他链接首先解决了这个问题。
  3. 这是我的代码:

    $('a.modal-link').on('click', openModal);
    
    function openModal(evt) {
      evt.preventDefault();
      var link = $(this).attr("href");
      var text = $(this).text();
      safeModal(link, text);
    };
    
    function safeModal(linkUrl, linkText) {
      var link = linkUrl;
      var page = window.location.href.split('?')[0];
      var text = linkText;
      var ajaxURL = "http://example.com/script.php";
    
      $.ajax({
        type: "POST"
        , url: ajaxURL
        , data: {
            link: link
            , page: page
        }
        , success: function (markup) {
            $(".feed-modal .modal-body").html(markup);
        }
      })
    };
    

    我还可以提供实际网站的链接,以便您自己查看问题(我可能没有正确解释)。

    更新:我正在添加the link。尝试点击第一个标题,您将看到问题。之后,重新加载网页,然后单击第六个链接。现在,关闭模态并再次单击第一个链接。这一切都应该完美。

    更新:语法错误不存在。我错误地在问题中提出了这个问题。 :)

1 个答案:

答案 0 :(得分:0)

此代码的语法错误(删除})):

success: function (markup) {
  $(".feed-modal .modal-body").html(markup);
  }) //delete this
}

整个功能应该是:

function safeModal(linkUrl, linkText) {
  var link = linkUrl;
  var page = window.location.href.split('?')[0];
  var text = linkText;
  var ajaxURL = "http://example.com/script.php";

  $.ajax({
    type: "POST"
    , url: ajaxURL
    , data: {
        link: link
        , page: page
    }
    , success: function (markup) {
        $(".feed-modal .modal-body").html(markup);
        //}) without this
    }
  })
};

工作DEMO