2017-01-14 116 views
3

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

  1. 只与特定的网站链接会发生。
  2. 该网站的链接应该是我点击的第一个链接。点击其他链接首先解决这个问题。

这里是我的代码:

$('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。尝试点击第一个标题,你会看到这个问题。之后,重新加载网页,然后点击第六个链接。现在,关闭模式并再次点击第一个链接。这一次,一切都应该完美。

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

+0

首先,试图摆脱关闭js错误。未捕获的ReferenceError:swfobject未定义。它可能会阻止你的脚本传播 –

+0

@RafałŁyczkowski错误是由于其他域。它与我的代码无关。 –

回答

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