Mam to dodać klasę do tabeli głównej, w którym raport jest w razie zwracania danych.

$('#report-area table td:contains("Sorry, your search did not return any data")').parents('#report-area').addClass('no-report-data')

Jednak mam inny obszar div "#report-footer", ale nie jest to wewnątrz #report-area. Chciałbym również dodać klasę .no-report-data do "#report-footer", ale w tym przypadku nie sądzę, że selektor .parents. Czy jest inny selektor, którego mogę użyć do tego?

0
Danny Englander 15 listopad 2011, 05:39

4 odpowiedzi

Najlepsza odpowiedź

Atrybuty identyfikacyjne są unikalne na stronie, dzięki czemu można to powiedzieć:

$('#report-footer').addClass('no-report-data');

Możesz także pominąć parents} i zrób je oboje jednocześnie:

if($('#report-area table td:contains("Sorry, your search did not return any data")').length)
    $('#report-area, #report-footer').addClass('no-report-data');
1
mu is too short 15 listopad 2011, 02:05

Link odniesienia http://visualjquery.com/

1
tthreetorch 15 listopad 2011, 01:48

Myślę, że to może działać

var uglySelector = 'table td:contains("Sorry, your search did not return any data")';
$('#reportArea:has(#report-area ' + uglySelector +'), #report-footer ' + uglySelector).addClass('no-report-data');

Polecam, aby uniknąć tego długiego przebierającego selektora ("Tabela TD: zawiera ..."), gdy piszesz wiadomość "Przepraszam ..." Wiadomość, po prostu dodaj klasę do tego TD do odrębnego później.

1
sanbor 15 listopad 2011, 01:50

Co powiesz na coś takiego? To nie jest prawdziwe seksowne, ale powinno pracować ....

var $noData = $('#report-area table td:contains("Sorry, your search did not return any data")').parents('#reportArea');

if ($noData.length)
{
  $noData.addClass('no-report-data');
  $("#report-footer").addClass('no-report-data');
}
0
Jake Feasel 15 listopad 2011, 01:45