2017-01-18 24 views
1

У меня есть следующий HTML-код. Я хочу, чтобы класс «moreDetails» будет показан только тогда, когда пользователь нажимает кнопку «Просмотр Больше» кнопкуПоказать следующий элемент, который не является родственным братом

<tr class="currentRow"> 
    <td>John</td> 
    <td>Doe</td> 
    <td>[email protected]</td> 

    <td><button type="button" class="btn btn-default" onclick="moreDetails(this)">View More</button></td></tr> 
    <tr class = moreDetails> 
    <td> 
      Additional details 
    </td> 
    </tr>   
    <tr> 

Вот мой Java-скрипт. Я пробовал все версии next(), .parent(), prev() и т. Д. Я не мог заставить его работать. Не могли бы вы помочь?

function moreDetails(obj){ 

      $(obj).closest('.currentRow').find('moreDetails').show(); 

} 
+1

добавить период для вашего выбора класса, '$ (OBJ) .closest (». CurrentRow '). Найти ('. MoreDetails'). Шоу (); ' – Hodrobond

+0

жаль, что это была опечатка. Первоначально у меня был период. Извините, что – SamT

ответ

1

Изменение find('moreDetails') в find('.moreDetails').

$(obj).closest('.currentRow').find('.moreDetails').show(); 

ИЛИ

$(obj).parent().next().show(); 

ИЛИ

$(obj).parent().next('.moreDetails').show(); 

РЕДАКТИРОВАТЬ:

Если html этот

<tr class="currentRow"> 
    <td>John</td> 
    <td>Doe</td> 
    <td>[email protected]</td> 
    <td><button type="button" class="btn btn-default" onclick="moreDetails(this)">View More</button></td> 
</tr> 
<tr class = moreDetails> 
    <td> Additional details</td> 
</tr> 

Затем используйте

$(this).closest('tr').next().show(); 
+0

'$ (obj) .closest ('. CurrentRow'). Find ('. MoreDetails'). Show();' can can use this, потому что 'moreDetails' не является дочерним элементом' currentRow', а является родным братом – guradio

+0

@ guradio да вы правы, я обновил ответ; – talkhabi

0
  1. <tr class = moreDetails> отсутствует кавычки вокруг имени класса. Это должно быть <tr class="moreDetails">

  2. Когда страница загружается, согласно вашему требованию, вам необходимо скрыть элемент <tr class="moreDetails". Итак, используйте style="display:none", чтобы скрыть div в исходном состоянии.

Одним из решений с использованием Javascript только

function moreDetails(){ 
 
    var moreDetailElement = document.querySelector(".moreDetails"); 
 
    moreDetailElement.style.display = "inline"; 
 
}
<table> 
 
<tr class="currentRow"> 
 
    <td>John</td> 
 
    <td>Doe</td> 
 
    <td>[email protected]</td> 
 

 
    <td><button type="button" class="btn btn-default" onclick="moreDetails()">View More</button></td></tr> 
 
    <tr class="moreDetails" style="display:none"> 
 
    <td> 
 
      Additional details 
 
    </td> 
 
    </tr>   
 
    </table>

+0

Код не является специфичным для экземпляра. Добавьте еще одну строку, и она сломается – charlietfl

+0

А также я хотел, чтобы то же самое происходило и для других строк по линии. Поэтому я не могу выбрать этот класс напрямую и показать его. Но в любом случае спасибо за ответ и попытку помочь мне. Счастливое кодирование. – SamT

0

$('button').closest('.currentRow').next('.moreDetails').css('color', 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr class="currentRow"> 
 
    <td>John</td> 
 
    <td>Doe</td> 
 
    <td>[email protected]</td> 
 

 
    <td> 
 
     <button type="button" class="btn btn-default" onclick="moreDetails(this)">View More</button> 
 
    </td> 
 
    </tr> 
 
    <tr class='moreDetails'> 
 
    <td> 
 
     Additional details 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
</table>

Используйте .closest() с .next().

  1. Используйте .closest('.currentRow') или .closest('tr'), чтобы получить родительский tr.
  2. Используйте .next('.moreDetails'), чтобы получить тр вы хотите, чтобы показать

 Смежные вопросы

  • Нет связанных вопросов^_^