【问题标题】:.attr() doesn't work for the lement created by javascript:appendChild.attr() 不适用于 javascript:appendChild 创建的 lement
【发布时间】:2013-02-02 09:57:09
【问题描述】:

我有一组缩略图,例如:

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

如您所见,我使用每个 DIV 的“类”以便将来能够通过其包含的图像名称找到所需的 DIV。

我有一个 Uploader(模仿 ajax,使用 iframe)。当我上传新图片时,我的 javascript 函数会从 php 文件中获得确认。如果没问题,我的 js 代码会添加(末尾的 appendChild)一个新的 DIV&IMG,如下所示:

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

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

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

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

【问题讨论】:

  • 但是你在哪里打电话给appendChild?
  • 我还有另一部分“使用 iframe 上传文件”的代码;在服务器端确认后的那个js函数中(文件上传成功)我需要将新上传的文件添加到'thumbnails set',所以我使用appendChild() -

标签: jquery html append attr


【解决方案1】:

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

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

另外,您将文件名用作类是有原因的吗?

【讨论】:

  • 我刚试过。这是相同的。适用于所有元素,但不适用于新创建的元素!我使用 DIV 类来保留 img 名称以进行其他操作。我很容易修改某些IMG的DIV元素,所以我使用imga名称(类)来找到需要的DIV
【解决方案2】:

发现..问题是

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多