根据它的背景图像删除元素

时间:2011-12-09 20:08:27

标签: javascript jquery if-statement attr

我正在尝试根据页面的背景属性从页面中删除元素。 就像是:     

    if ( $('td').attr('background','backgroundimageurl')){this.remove();}
    
但这不起作用吗?

4 个答案:

答案 0 :(得分:3)

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

$( '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(“thePath”)而不是webl中的url(thePath)。因此,仅测试url值将是最灵活的。

答案 1 :(得分:1)

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

这可能会做你想要的:

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

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

答案 2 :(得分:0)

更简短的例子:

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

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

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

答案 3 :(得分:-2)

试试这个。当你在做attr(“background”,“backgroundurl”)时,这是试图设置背景attr而不是找到匹配的元素。这样就可以了。

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