如何使用jQuery获取类后面唯一的下一个元素?

qyyhg6bp  于 2023-06-22  发布在  jQuery
关注(0)|答案(6)|浏览(191)

我试图在用户单击特定图标时在列表中显示列表。这是我的代码。
HTML:

<li class="filename"><img src="expand.png" /> Lorem ipsum dolor sit amet</li>
<ul class="datalog">
    <li>Lorem ipsum dolor sit amet</li>
    <li>Lorem ipsum dolor sit amet</li>
    <li>Lorem ipsum dolor sit amet</li>
</ul>
<li class="filename">
<img src="expand.png" /> Lorem ipsum dolor sit amet</li>
<ul class="datalog">
    <li>Lorem ipsum dolor sit amet</li>
    <li>Lorem ipsum dolor sit amet</li>
    <li>Lorem ipsum dolor sit amet</li>
</ul>

JQuery:

$('.filename img').click(function () {
    $('.filename').next(".datalog").show();
});

这是JSFiddle
我还尝试了像最接近或孩子的功能,可能是不好的实现,没有成功。
在我的例子中,只有两个主列表,但在应用程序中,列表的数量是可变的(所以我不能真正使用索引)。
如何仅显示与单击相关的列表?

nzkunb0c

nzkunb0c1#

使用this引用

$('.filename img').click(function () {
   $(this).parent().next(".datalog").show();
});

解释

$(this)-->current clicked element , which is img
parent()--> go to parent which is `li`
.next(".datalog") --> go to the next element whose class is `.datalog`, that is `ul` 
.show()  -->show

fiddle here

6vl6ewon

6vl6ewon2#

你可以这样做:

$('.filename img').click(function () {
    $(this)                   // Get the current img being clicked
         .closest('li')       // Go to the closest parent `li` to the img
         .next('.datalog')    // Go to the next sibling of the `li`
         .show();             // Show the `ul` with the class `.datalog`
});

FIDDLE DEMO #1
你也可以试试这个:

$('.filename img').click(function () {
    $(this).closest('li').next('.datalog').show().siblings('.datalog').hide();
});

FIDDLE DEMO #2

8fsztsew

8fsztsew3#

$('.filename img').click(function () {
    $(this).closest('li').next(".datalog").show();
});

演示---->http://jsfiddle.net/Lnxdf/2/

ffvjumwh

ffvjumwh4#

http://jsfiddle.net/Lnxdf/9/

$('.filename img').click(function () {
    $(this).parent().next('ul.datalog').show();
});

虽然我不太喜欢这样的结构

dhxwm5r4

dhxwm5r45#

使用此代码:

$('.filename img').click(function () {
    $(this).parent().next().show();
});

http://jsfiddle.net/Lnxdf/6/

rryofs0p

rryofs0p6#

尝试此完整过程

$(document).ready(function(){

    $('.filename img').click(function () {
        if( $(this).closest('li').next('.datalog').is(':hidden')) {
        $(this)                   // Get the current img being clicked
             .closest('li')       // Go to the closest parent `li` to the img
             .next('.datalog')    // Go to the next sibling of the `li`
             .show();             // Show the `ul` with the class `.datalog`
        } else {
               $(this)                   // Get the current img being clicked
             .closest('li')       // Go to the closest parent `li` to the img
             .next('.datalog')    // Go to the next sibling of the `li`
             .hide();             // Show the `ul` with the class `.datalog`
        }
    });
});

相关问题