JQuery检查prepend是否失败

时间:2010-02-18 19:10:13

标签: jquery

关于如何测试prepend()成功的任何想法? Prepend()当然不适用于图像标记,所以我需要在before()之前执行。

我正在尝试使用.query类将前映像添加到所有跨度,但无法使其在包含自闭项标记(如图像)的跨度上工作。

试过这个:

$('.query').each(function(i) {
  var elm=$(this);
  if (elm.prepend('<img class="fold" src="/img/fold.png" />').find('img.fold').length==0) {
    elm.before('<img class="fold" src="/img/fold.png" />');
  }
});

在:

<span class="query">
  <img alt="blah" src="img/banner.jpg" height="422" width="952" />
</span>
<span class="query">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ornare, tellus in posuere viverra, dui dolor lacinia elit, vitae vestibulum nuluris condimentum. Donec vel mauris t sed sit amet. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos</p>
</span>

没有答案,所以我现在有一个解决方法:

if (elm[0].tagName.toLowerCase()=="img") {
    elm.before('<img class="fold" src="/img/fold.png" />');
}
else {
    elm.prepend('<img class="fold" src="/img/fold.png" />')
}

2 个答案:

答案 0 :(得分:1)

prepend不会失败 如果你查看Firebug,你会看到你附加的元素确实存在。

您可以检查新插入的元素.is(':visible')。 (除非父母本身被隐藏)

答案 1 :(得分:0)

由于我无法检测前置是否失败,我检测到前置是否会失败。

if (elm.is(':empty')) {
    elm.before('<img class="fold" src="/img/fold.png" />');
}
else {
    elm.prepend('<img class="fold" src="/img/fold.png" />');
}