我想在页面上的某个<li>
的末尾添加div。
我无法更改标记的结构,所以我必须从我对它的信息中钻取。
我从span.ruUploadSuccess
开始,找到一个包含数组fileInfo[0]
中的文本的文件
然后我从那里去了两个父母,这是我需要附加的<li>
。
如果div已经存在,我不想附加这些数据,所以我检查该行是否已经有这个div(使用.has()
),然后使用{{1}从我的结果中过滤出来}。
除了IE7之外,所有浏览器都能很好地工作。在IE7中,它找到了我想要附加的正确行,但它并没有过滤掉那些已经有这个div的行。这导致将相同的div追加两次(或更多次)。
是否有更简单的方法来访问此特定元素?有没有理由说这在IE7中会有不同的功能?
我的代码,用于查找要追加到的.not()
元素:
<li>
以下是一些示例标记,显示了我正在尝试完成的结构:
var row = $("span.ruUploadSuccess:contains('" + fileInfo[0] + "')").parent().parent();
$(row).not($(row).has("div.contactUsAttachmentFileSize")).append(label);
答案 0 :(得分:0)
如何使用filter()。它似乎比not()/。has()
更好$(row).filter(function(){
return !$(this).find('div.contactUsAttachmentFileSize').length;
}).append(label);
不是,小提琴
http://jsfiddle.net/wirey00/vxmGw/
filter()小提琴 http://jsfiddle.net/wirey00/B6v3A/
答案 1 :(得分:0)
我只是以一种更能表达你真正想做的方式重新编码。虽然你拥有的应该工作 - 但是很难理解,而更谨慎的方法可以避免细微的jquery东西,这可能会给旧IE带来麻烦。你的意图也更清楚了。
你真的只想测试div是否已经存在,如果不存在则添加它。所以把它写成条件。
http://jsfiddle.net/jamietre/ECVny/
var row = $("span.ruUploadSuccess:contains('test file')").parent().parent();
if (!row.find("div.contactUsAttachmentFileSize").length) {
row.append(label);
}