jquery用append语句加入一个div之后,再用语句操作加入后的div没反应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery用append语句加入一个div之后,再用语句操作加入后的div没反应相关的知识,希望对你有一定的参考价值。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style type="text/css">
.largeImg
display:none;
</style>
</head>
<body>
<script type="text/javascript" src="jquery.1.4.4.min.js" ></script>
<script type="text/javascript">
$(function()
$(".central img").click(function()
var largeImg = "<div class='largeImg'><img src='"+this.src+"' alt='"+this.title+"'/></div>"
$("body").append(largeImg);
$(".largeImg")
.css("border":"1px solid #f80"
).fadeIn("slow");
);
$(".largeImg").click(function()
alert('作死的节奏啊!')
);
)
</script>
<div class="central">
<p>公司有着丰富多彩的健康休闲文化,为员工免费提供篮球场、排球场、羽毛球场、乒乓球室、桌球室等活动场所,有专业教练培训指导,并定期开展多种文体娱乐活动,给员工充分展示自己的舞台 …… </p>
<p>
<img border="0" title="尼玛!" width="175" height="116" src="http://www.glzmn.com/pictures/exercise/IMG_3836.jpg">
<img border="0" alt="" width="175" height="116" src="http://www.glzmn.com/pictures/exercise/IMG_3944.jpg">
<img border="0" alt="" width="175" height="116" src="http://www.glzmn.com/pictures/exercise/IMG_1334.jpg">
</p>
</div>
</body>
</html>

如上代码,加入.largeImg的时候一切正常,但是后边这条语句始终不能执行,是怎么回事?
$(".largeImg").click(function()
alert('作死的节奏啊!')
);

你这个click语句,是肯定不会执行的。因为你这个元素是后来添加的,而click事件的注册,在页面加载时就已经完成了(而此时还没有这个.largeImg元素)


解决方法:把事件注册到document上面。这样当执行事件时,会冒泡触发。


代码:

$(".largeImg").live("click",function()
    alert('作死的节奏啊!');
);

参考技术A

语法错误。

        );
        $(".largeImg").click(function()
            alert('作死的节奏啊!')
        );

改成

        $(".largeImg").click(function()
            alert('作死的节奏啊!')
        );
        );

你把后面的事件绑定,放到上面click的外面了,绑定的时候,这个元素还不存在。

参考技术B 在jquery中在文档加载完成之后添加进去的的元素是不能直接绑定的,要用.live方法绑定,你换成$(".largeImg").live("click",function()
alert('作死的节奏啊!')
)
就可以了

jquery Append() 中的 if 语句

【中文标题】jquery Append() 中的 if 语句【英文标题】:If-statement inside jquery Append() 【发布时间】:2012-10-05 14:10:48 【问题描述】:

在我的 jquery Append() 中,我不想运行 IF 语句来在我的所有对象上包含图像,除了第一个对象。

喜欢:

var i = 0;

$('#divDetailsForSelectedInfo').append(
    '<div class="roundedAndBoxShade leftResultObject" id = "' + value.Query.Id + '">'+
    '<div class="leftResultObject_inner">' +
if (i > 0)
   <img src="/img.jpg"/>;

'<div>asdf</div>');

代码由 Json+Jquery 生成,然后全部附加到我的索引文件中的一个 div 上。 据我通过即时 google 得知,这是无法做到的,但我可能错了?

如果确实“不可能”,Jquery 中的 :first 选择器可以以某种很酷的方式使用吗?

【问题讨论】:

等等:你在哪里增加i为什么基于id的选择器会返回多个元素? 【参考方案1】:

一个更简单的解决方案:

var i = 0;
$('#somediv').append(
    'html before' + 
    (i > 0 ? '<img src="/img.jpg"/>': '') +
    'more html'
);

【讨论】:

【参考方案2】:
var i = 0;
var str=''
if (i > 0)
  str =  '<img src="/img.jpg"/>;'

$('#divDetailsForSelectedInfo').append(
    '<div class="roundedAndBoxShade leftResultObject" id = "' + value.Query.Id + '">'+
    '<div class="leftResultObject_inner">' +str+'<div>asdf</div>');

【讨论】:

【参考方案3】:

我能想到的最简单的方法:

$('#divDetailsForSelectedInfo').append(
    function(i) 
        return '<div class="roundedAndBoxShade leftResultObject" id = "' + value.Query.Id + '">' + '<div class="leftResultObject_inner">' + (i > 0 ? '<img src="/img.jpg"/>' : '');
    );

JS Fiddle proof-of-concept.

【讨论】:

以上是关于jquery用append语句加入一个div之后,再用语句操作加入后的div没反应的主要内容,如果未能解决你的问题,请参考以下文章

jQuery常用要点

jQuery的append在火狐中运用出问题

用Jquery动态append方式加入标签时Css样式丢失的解决方法

用jq添加或移除div

jquery利用append的div样式问题

处理jQuery append加入的元素 绑定事件无效的方法