2017-01-18 44 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')。演出的TR( );' – Hodrobond

+0

对不起,这是一个错字。我原本是有这段时间的。对不起, – SamT

回答

1

变化find('moreDetails')变为find('.moreDetails')

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

OR

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

OR

$(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();'不能使用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()与一0。

  1. 使用.closest('.currentRow').closest('tr')得到父tr。
  2. 使用.next('.moreDetails')得到你想要显示
相关问题