Javascript 将HTML添加到文档正文不允许div单击
当点击蝙蝠侠图像时,它会显示“overlay”div,但是由于某种原因,该div不可点击,因此不允许运行代码的onclick部分。正在删除“document.body…”代码行解决了这个问题,但为什么呢 JS:Javascript 将HTML添加到文档正文不允许div单击,javascript,jquery,Javascript,Jquery,当点击蝙蝠侠图像时,它会显示“overlay”div,但是由于某种原因,该div不可点击,因此不允许运行代码的onclick部分。正在删除“document.body…”代码行解决了这个问题,但为什么呢 JS: window.onload=function() { $(“#覆盖”).hide(); } $(文档).ready(函数(){ //页面已准备就绪 $(“#覆盖”)。在(“单击”,函数(){ 警报(“hi”); 美元(“#叠加”)。淡出(500); }); $(“#蝙蝠侠”)。在(“单击
window.onload=function()
{
$(“#覆盖”).hide();
}
$(文档).ready(函数(){
//页面已准备就绪
$(“#覆盖”)。在(“单击”,函数(){
警报(“hi”);
美元(“#叠加”)。淡出(500);
});
$(“#蝙蝠侠”)。在(“单击”,函数(){
lightboxImg()
});
});
函数lightboxImg()
{
var source=$('#蝙蝠侠').attr('src');
var text=“”;
document.body.innerHTML=文本+document.body.innerHTML;
$(“#叠加”).fadeIn(0);
}
HTML:
灯箱
随机文本内容
328ueekfuuirgh40t43h8hohro8ht
使用扩展jQuery格式,如:
$(document).on('click', $(#....), function(){});
检查jQuery API以获取扩展的
.on()
参数。您的处理程序应用于某些元素,这些元素在附加到innerHTML
时重新创建。您需要将.prepend添加到body,并具有如下内容:
window.onload = function()
{
$("#overlay").hide();
}
$(document).ready(function(){
//page is ready
$("body").on("click", "#overlay",function(){
alert("hi");
$("#overlay").fadeOut(500);
});
$('body').on("click", "#batman",function(){
lightboxImg()
});
});
function lightboxImg()
{
var source = $('#batman').attr('src');
var text = "<img src= \"" + source + "\" id=\"lightbox-img\"/>";
$("body").prepend(text);
$("#overlay").fadeIn(0);
}
window.onload=function()
{
$(“#覆盖”).hide();
}
$(文档).ready(函数(){
//页面已准备就绪
$(“正文”)。在(“单击”,“覆盖”,函数()上){
警报(“hi”);
美元(“#叠加”)。淡出(500);
});
$('body')。在(“单击”,“蝙蝠侠”,函数()上){
lightboxImg()
});
});
函数lightboxImg()
{
var source=$('#蝙蝠侠').attr('src');
var text=“”;
$(“正文”)。前缀(文本);
$(“#叠加”).fadeIn(0);
}
document.body.innerHTML=…
使用新元素覆盖正文中的元素。新元素将没有任何事件侦听器。因此,单击它们不会触发任何函数。因此,与其使用新元素验证正文内容,不如使用insertBefore
like:
function lightboxImg()
{
var source = $('#batman').attr('src');
var text = "<img src= \"" + source + "\" id=\"lightbox-img\"/>";
//insertBefore
$(text).insertBefore($("#overlay"));
$("#overlay").fadeIn(0);
}
函数lightboxImg()
{
var source=$('#蝙蝠侠').attr('src');
var text=“”;
//插入之前
$(文本).insertBefore($(“#覆盖”);
$(“#叠加”).fadeIn(0);
}
您能分享一个JSFIDLE链接或一个完整的示例(图像和css)以便我们与您核对吗?欢迎使用so和帮助的可能副本!注意,它不是“扩展的”jQuery格式,它被称为。此外,您应该扩展示例代码以显示问题中的相关位。最后,这个问题是重复的,所以作为so的优秀管理者,您不会回答,而是投票以重复的方式结束问题。@cale_b谢谢,我将尝试在回答和术语方面更相关!或$(“body”)。如果要先插入(text)
,则不管第一个元素是什么。
window.onload = function()
{
$("#overlay").hide();
}
$(document).ready(function(){
//page is ready
$("body").on("click", "#overlay",function(){
alert("hi");
$("#overlay").fadeOut(500);
});
$('body').on("click", "#batman",function(){
lightboxImg()
});
});
function lightboxImg()
{
var source = $('#batman').attr('src');
var text = "<img src= \"" + source + "\" id=\"lightbox-img\"/>";
$("body").prepend(text);
$("#overlay").fadeIn(0);
}
function lightboxImg()
{
var source = $('#batman').attr('src');
var text = "<img src= \"" + source + "\" id=\"lightbox-img\"/>";
//insertBefore
$(text).insertBefore($("#overlay"));
$("#overlay").fadeIn(0);
}