Удалить элемент в зависимости от фона - PullRequest
1 голос
/ 10 декабря 2011

Я пытаюсь удалить элемент со страницы на основе его атрибута фона. Что-то вроде:

    if ( $('td').attr('background','backgroundimageurl')){this.remove();}
    
Но это не работает какие-либо предложения?

Ответы [ 4 ]

3 голосов
/ 10 декабря 2011

Вы также можете использовать фильтр для фильтрации набора результатов на основе ваших операций:

$( '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") вместо url (thePath), как в webkit.Таким образом, простое тестирование значения URL будет наиболее гибким.

1 голос
/ 10 декабря 2011

Причина, по которой он не работает, заключается в том, что в вашем фрагменте кода "this" является текущим контекстом (скорее всего, окном).

Это может делать то, что вы хотите:

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

каждая перебирает все подходящие элементы. i - номер цикла, а e - текущий элемент. Поэтому мы проверяем каждый элемент и затем действуем, когда находим тот, который нам нужен.

0 голосов
/ 10 декабря 2011

Еще более короткий пример:

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

Прочтите селекторы jQuery. Они могут быть действительно полезны :)

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

0 голосов
/ 10 декабря 2011

Попробуй это.Когда вы делали attr ("background", "backgroundurl"), он пытался установить attr фона, а не находить совпадающие элементы.Это сделает свое дело.

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