移除元素取决于它的背景图像

Remove element depending on it's background-image

本文关键字:背景 图像 取决于 元素      更新时间:2023-09-26

我试图根据它的背景属性从页面中删除一个元素。喜欢的东西:<>之前如果($ (td) .attr("背景"、"backgroundimageurl")){this.remove ();}之前但这行不通,有什么建议吗?

您还可以使用filter根据您的操作来过滤结果集:

$( 'td' ).filter( function(){
   // return true of it matches, thus, keeping it in the object
   return $(this).css( 'backgroundImage' ) === 'someUrlOrWhatever';
}).remove();

根据roXon的请求演示:http://jsfiddle.net/danheberden/9rTZj/

但是,最好做一个像

这样的检查。
return /someDomain'.com'/path'/to'/whatever/.test( $( this ).css( 'backgroundImage' ) );

中的过滤器函数。不同的浏览器将为css规则返回不同的格式,正如roXon指出的,===方法在FF中不起作用,因为返回的字符串将是url("路径")而不是url(路径),就像在webkit中一样。因此,只测试url值将是最灵活的。

它不起作用的原因是,在你的代码片段中,"this"是当前上下文(很可能是窗口)。

这可能是你想要的:

$('td').each(function (i, e) {
  if (e.style.foo === "bar") {
    $(e).remove();
  }
});

each遍历所有匹配的元素。I是循环的编号,e是当前元素。因此,我们测试每个元素,然后在找到具有我们想要的样式的元素时采取行动。

更短的例子:

$('td[background="backgroundimageurl"]').remove();

阅读jQuery选择器。它们真的很有用:)

http://api.jquery.com/category/selectors/

试试这个。当你做attr("背景","背景")这是试图设置背景attr,而不是寻找元素匹配。

if($("body").find("td").css("background-image") == "backgroundimageurl"){this.detach()};