Я пытаюсь переключить строку сведений через два разных источника.
- Если пользователь щелкает имя или AddressAlert, то эта конкретная строка сведений отображается или скрывается.
- Если пользователь нажимает «переключить все», то ВСЕ строки сведений отображаются или скрываются.
Проблема в том, что две отдельные функции переключения не знают, чем занимается другая. Так, например, если вы только что щелкнули «переключить все», и теперь отображаются все строки сведений, нажатие на отдельное имя должно скрыть эту строку сведений. Однако, поскольку отдельная функция переключения предназначена для «отображения», требуется 2 щелчка, чтобы скрыть сведения для этой строки.
HTML:
<div id="toggleAll"></div>
<table>
<tr class="infoRow"><td class="addressAlert"></td><td class="name"></td></tr>
<tr class="details"></tr>
<tr class="infoRow"><td class="addressAlert"></td><td class="name"></td></tr>
<tr class="details"></tr>
<tr class="infoRow"><td class="addressAlert"></td><td class="name"></td></tr>
<tr class="details"></tr>
</table>
Яваскрипт:
//toggles beween showing and hiding the details for specific row
$(
function(){
//if click on carrier name or address alert symbol
$('.name, .addressAlert').toggle(
function() {
//gets the row clicked on, and finds the next row (the details row)
detailsTds = $(this).parents("tr.infoRow").next();
//adds the "shown" class, which sets the display to table-row
detailsTds.addClass("shown");
},
function(){
//gets the row clicked on, and finds the next row (the details row)
detailsTds = $(this).parents("tr.infoRow").next();
//removes the "shown" class, thereby setting the display to none
detailsTds.removeClass("shown");
}
);
}
);
//toggle ALL details
$(
function(){
//if click on carrier name or address alert symbol
$('#toggleAll').toggle(
function() {
$('.details').addClass("shown");
$('#toggleAll').text('[-] Hide all addresses');
},
function(){
$('.details').removeClass("shown");
$('#toggleAll').text('[+] Show all addresses');
}
);
}
);