我正在尝试根据页面的背景属性从页面中删除元素。 就像是:
if ( $('td').attr('background','backgroundimageurl')){this.remove();}但这不起作用吗?
答案 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选择器做一些阅读。它们真的很有用:)
答案 3 :(得分:-2)
试试这个。当你在做attr(“background”,“backgroundurl”)时,这是试图设置背景attr而不是找到匹配的元素。这样就可以了。
if($("body").find("td").css("background-image") == "backgroundimageurl"){this.detach()};