Show/Hide ul li 内的内容
Show/Hide content inside ul li
我想通过单击 link 来 show/hide li
中的内容,就像 'more information' 按钮一样。我的代码隐藏了每个 li
的内容,而不仅仅是被点击的那个。请看一看:
$(document).ready(function() {
$('ul li').on('click', '.abrir', function(e) {
e.preventDefault();
$('ul li').find('.oculto').toggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
Biológica
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Oxidativa
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Pasificación
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Dulzor
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
</ul>
问题是因为您选择了点击处理程序中的所有 li
元素,而不是包含触发事件的 .abrir
元素的元素。
为此,您可以使用 this
关键字,因为 jQuery 将事件处理函数的范围设置为引发事件的元素。从那里您可以使用 siblings()
方法来检索相关的 .oculto
元素。试试这个:
$(function() {
$('ul li').on('click', '.abrir', function(e) {
e.preventDefault();
$(this).siblings('.oculto').toggle();
});
});
.oculto { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
Biológica
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Oxidativa
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Pasificación
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Dulzor
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
</ul>
而不是这个 $('ul li').find('.oculto').toggle();
只需使用这个 $(this).parent().find('.oculto').toggle();
,在你的代码中你隐藏了所有的 li 元素,而不仅仅是点击了一个。
在你的脚本中,而不是使用
$('ul li').find('.oculto').toggle();
请使用
$(this).parent().find('.oculto').toggle();
并在您的 CSS 代码中添加以下代码片段。
.oculto { display: none; }
.abrir {
color: blue;
cursor: pointer;
}
下面的示例:
***Script***
$(document).ready(function () {
$('ul li').on('click', '.abrir', function (e) {
e.preventDefault();
$(this).parent().find('.oculto').toggle();
});
});
***In CSS***
.oculto { display: none; }
.abrir {
color: blue;
cursor: pointer;
}
我想通过单击 link 来 show/hide li
中的内容,就像 'more information' 按钮一样。我的代码隐藏了每个 li
的内容,而不仅仅是被点击的那个。请看一看:
$(document).ready(function() {
$('ul li').on('click', '.abrir', function(e) {
e.preventDefault();
$('ul li').find('.oculto').toggle();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
Biológica
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Oxidativa
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Pasificación
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Dulzor
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
</ul>
问题是因为您选择了点击处理程序中的所有 li
元素,而不是包含触发事件的 .abrir
元素的元素。
为此,您可以使用 this
关键字,因为 jQuery 将事件处理函数的范围设置为引发事件的元素。从那里您可以使用 siblings()
方法来检索相关的 .oculto
元素。试试这个:
$(function() {
$('ul li').on('click', '.abrir', function(e) {
e.preventDefault();
$(this).siblings('.oculto').toggle();
});
});
.oculto { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<ul>
<li>
Biológica
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Oxidativa
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Pasificación
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
<li>
Dulzor
<span class="abrir">>></span>
<span class="oculto">Texto oculto para mostrar</span>
</li>
</ul>
而不是这个 $('ul li').find('.oculto').toggle();
只需使用这个 $(this).parent().find('.oculto').toggle();
,在你的代码中你隐藏了所有的 li 元素,而不仅仅是点击了一个。
在你的脚本中,而不是使用
$('ul li').find('.oculto').toggle();
请使用
$(this).parent().find('.oculto').toggle();
并在您的 CSS 代码中添加以下代码片段。
.oculto { display: none; }
.abrir {
color: blue;
cursor: pointer;
}
下面的示例:
***Script***
$(document).ready(function () {
$('ul li').on('click', '.abrir', function (e) {
e.preventDefault();
$(this).parent().find('.oculto').toggle();
});
});
***In CSS***
.oculto { display: none; }
.abrir {
color: blue;
cursor: pointer;
}