我有一個JQuery彈出式功能,當用戶點擊一個鏈接時顯示一些文本。他們點擊「關閉」關閉彈出窗口。非常直截了當。爲什麼這個JQuery彈出窗口重新出現?
問題是彈出窗口在關閉後立即重新出現。
這裏的問題位:
JAVACRIPT
$.fn.myPopup = function(popupText)
{
var popupHtml = '<div class="messagepop pop">' + popupText + '<p align="right"><a class="close" href="#">Close</a></div>';
this.each(function()
{
$(this).click(function(){
$(this).addClass("selected").parent().append(popupHtml);
$(".pop").slideFadeToggle()
});
return false;
});
$(".close").on('click', function()
{
alert('in close function - about to do slideFadeToggle on: ' + popupText);
$(".pop").slideFadeToggle();
alert('just did slideFadeToggle, about to removeClass on: ' + popupText);
$(this).removeClass("selected");
alert('just did removeClass on: ' + popupText);
});
return this;
};
$("#word1234").myPopup("Lorem Ipsum");
$("#wordABCD").myPopup("Hello World");
HTML
<a href="#" id="word1234">Supercalifragilisticexpialidocious</a> <br>
<a href="#" id="wordABCD">Foo</a> <br>
這裏有一個小提琴,所以你可以在行動中看到它:http://jsfiddle.net/N4QCZ/3/
爲什麼又出現彈出它成功地關閉後?
我沒有看到任何彈出,而不是一個js錯誤「slideFadeToggle不是一個函數」。 – KBN 2013-02-12 17:42:37
我不得不改變小提琴使用jQuery 1.9.1而不是1.4RC4來讓小提琴起作用。 – Barmar 2013-02-12 17:45:10
問題在於,在彈出窗口被添加到DOM之前,您正在綁定'$(「。close」)。on('click',...)',因此沒有任何可綁定的東西。你需要委託而不是綁定。 – Barmar 2013-02-12 17:46:41