.attr()不适用于javascript:appendChild创建的元素

时间:2013-02-18 01:52:12

标签: jquery html append attr

我有一组缩略图,如:

<div id='thumb' class='anImage.jpeg'>
<img src='anImage.jpg' />
</div>
......
<div id='thumb' class='anotherImage.jpeg'>
<img src='anotherImage.jpg' />
</div>

正如你所看到的,我使用每个DIV的'class'以便将来能够通过它包含的Image Name找到所需的DIV。

我有一个上传者(ajax模仿,使用iframe)。当我上传新图像时,我的javascript函数从php文件中获取确认。如果没关系,我的js代码会添加(最后是appendChild)一个新的DIV和IMG,如下所示:

<div id='thumb' class='newUploaded.jpeg'>
<img src='newUploaded.jpg' />
</div>

现在关于这个问题: 我有另一个jQuery函数,通过点击任何图像(RENAME BUTTON)发送到被点击的php文件图像名称。但是在服务器端重命名文件之后,我需要使用jQuery在客户端更新映像名称。所以,我做了类似的事情:

$.ajax({
.....
success: function(){
   $("div.oldname").attr("class", "newname");
}
.....
});

并且只有在上传后才创建文件时它才起作用。我的代码不适用于刚刚由javascript appendChild()函数创建的元素。

2 个答案:

答案 0 :(得分:0)

您是否尝试删除旧类并添加新类而不是使用.attr()方法:

$("div.oldname").removeClass('oldname').addClass('newname');

另外,您是否有理由将文件名用作类?

答案 1 :(得分:0)

发现..问题是

<div class="filename"></div>

文件名如:img.jpg有一个点:)所以我们有不正确的类:

$('div.img.jpg').blabla() // more than 1 dot ;