Javascript jQuery-调整页面大小后链接停止工作
我试图使我的网站响应,并添加了一些jQuery删除和插入HTML。我试图在单击图像周围的锚定标记时显示一个弹出框 该窗口在第一次加载页面时出现,但当页面大小调整后,链接不再工作,也不会显示弹出窗口Javascript jQuery-调整页面大小后链接停止工作,javascript,jquery,html,Javascript,Jquery,Html,我试图使我的网站响应,并添加了一些jQuery删除和插入HTML。我试图在单击图像周围的锚定标记时显示一个弹出框 该窗口在第一次加载页面时出现,但当页面大小调整后,链接不再工作,也不会显示弹出窗口 // Call hidePopup function upon clicking element with class ".close" $(function() { $('.close').click(hidePopup); }); function
// Call hidePopup function upon clicking element with class ".close"
$(function() {
$('.close').click(hidePopup);
});
function hidePopup() {
if (this.id == 'hideP1') {
$('#popup1').addClass('hidePopups');
} else if (this.id == 'hideP2') {
$('#popup2').addClass('hidePopups');
} else if (this.id == 'hideP3') {
$('#popup3').addClass('hidePopups');
}
}
// Call showPopup function upon clicking element with class ".imgClick"
$(function() {
$('.imgClick').click(showPopup);
});
function showPopup() {
if (this.id == 'imgEms') {
$('#popup1').removeClass('hidePopups');
} else if (this.id == 'imgPas') {
$('#popup2').removeClass('hidePopups');
} else if (this.id == 'imgTs') {
$('#popup3').removeClass('hidePopups');
}
}
var LinkedHtml = [
'<a href="#popup1" class="imgClick" id="imgEms" onclick="showPopup()"><img src="assets/img/festival-big.jpg" title="Event Medical Services"></a>',
'<a href="#popup2" class="imgClick" id="imgPas" onclick="showPopup()"><img src="assets/img/ambulance2.png" title="Private Ambulance Services"></a>',
'<a href="#popup3" class="imgClick" id="imgTs" onclick="showPopup()"><img src="assets/img/training_1.jpeg" title="Training Solutions"></a>'
];
var nonLinkedHtml = [
'<img src="assets/img/festival-big.jpg" title="Event Medical Services" id="emsImg">',
'<img src="assets/img/ambulance2.png" title="Private Ambulance Services" id="pasImg">',
'<img src="assets/img/training_1.jpeg" title="Training Solutions" id="tsImg">'
];
$(window).resize(function() {
windowSize = $(window).width();
var anchorIds = ['#imgEms','#imgPas','#imgTs'];
var imageIds = ['#emsImg','#pasImg','#tsImg'];
if (windowSize < 740) {
for (var i = 0; i < imageIds.length; i++) {
$(imageIds[i]).replaceWith(LinkedHtml[i]);
}
} else if (windowSize > 740) {
$(".overlay").addClass("hidePopups");
for (var i = 0; i < anchorIds.length; i++) {
$(anchorIds[i]).replaceWith(nonLinkedHtml[i]);
}
}
});
我对JavaScript和jQuery没有太多的经验,我整天都在为这个问题苦苦挣扎
谢谢大家! 如果尝试使用代理,会发生什么
$(function() {
$(document.body).on('click', '.imgClick', showPopup);
});
如果这样做有效,那么您应该尝试查找imgClick元素始终存在的父元素,该元素从未被替换,并将其用作选择器,而不是document.body。打开控制台F12,查看是否有任何错误。@Taplar出现的唯一错误是使用getPreventDefault不推荐使用。改用defaultPrevented。但这以前并没有影响它。好吧,对于shiggles,将onclick=showPopup更改为onclick=showPopupthis,并将您的方法更改为在元素中接受。替换元素时,新元素上的绑定不存在。因此,您所拥有的只是onclick内联绑定。或者,如果要替换的所有元素都有一个公共父级,您可以将绑定更改为委托绑定,以后是否替换它们也无所谓。@Taplar不幸没有成功。我会试试你最新的方法,效果很好。感谢您的帮助,使之易于理解!