我正在使用jQuery單擊事件處理程序將點擊事件添加到存在於我的HTML中的所有錨標記。 但點擊事件只能使用一次。基本上onclick行動,我顯示一個彈出窗口,它只顯示一次。如果我再次點擊它不顯示。jQuery:爲什麼點擊事件只能工作一次?
下面是我的代碼:
function onClickLoginPopup (anchor)
{
var url = anchor.href;
var head = document.getElementsByTagName('head')[0];
var mainPopup = $('#popupMain');
if (mainPopup.length == 0 && mainPopup.is(":visible") == false)
{
// load popup.css
var styleSheet = document.createElement('link');
styleSheet.href = 'http://192.168.1.6:8080/OtherDomain/css/mpw.css?' + new Date();
styleSheet.rel = "stylesheet";
head.appendChild(styleSheet);
$.ajax({
url: "http://192.168.1.6:8080/OtherDomain/popup.html",
data: '',
cache: false,
success: function(data){
document.body.innerHTML += data;
if($('#popupMain').length > 0) {
alert('ShowPopup');
showPopup();
}
}
});
}
}
function addClickEventListenerToAllAnchorTag()
{
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++)
{
var anchor = anchors[i];
//console.log(anchor);
anchors[i].addEventListener("click",function(event)
{
console.log(this.href + ' clicked');
onClickLoginPopup(anchor);
}, false);
}
}
function initialize(){
var head = document.getElementsByTagName('head')[0];
var host = "192.168.1.6";
var server = "http://" + host + ":8080/OtherDomain/";
var req = document.createElement("script");
req.src = server + "js/jquery.js?" + new Date();
req.type = "text/javascript";
head.appendChild(req);
// load Popup.js
var popupJs = document.createElement("script");
popupJs.type = 'text/javascript';
popupJs.src = "http://192.168.1.6:8080/OtherDomain/js/Popup.js?" + new Date();
head.appendChild(popupJs);
addClickEventListenerToAllAnchorTag();
}
window.onload = initialize;
這裏上的window.onload我打電話初始化基本上我加載腳本彈出和jQuery功能,並呼籲這是剛剛獲取所有錨標籤從addClickEventListenerToAllAnchorTag()函數HTML並添加click事件監聽器。裏面,我打電話onClickLoginPopup()函數是ajax調用來獲取遠程元素。有在showPopup()調用mehtod下面的代碼:
Popup.js
function showPopup() {
console.log('In showPopup');
//$('#popupMain').show();
document.getElementById('popupMain').style.display = 'block';
}
但不知何故,這個彈出是越來越顯示只有一次,未能顯示在隨後的點擊。 請幫忙。
當你第二次點擊它時'mainPopup.is(「:visible」)'的值是多少? – mininoz 2015-04-06 08:42:24
DOM和jQuery的可怕組合。另外我懷疑你需要添加preventDefault到主播 – mplungjan 2015-04-06 08:46:58
@mininoz第二次函數不會被調用 – mahendrakawde 2015-04-06 08:49:01