HTML: jQuery: манипулирование DOM - PullRequest
0 голосов
/ 12 октября 2011

Я ленивый. Там! Это вне пути.

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

<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
</head>
<body>
<p>List of stuff</p>
<ul>
    <li> One <a href="#" class="showmore_link">show more</a>  <span class="showmore" style="display:none"> More about One </span></li>
    <li> Tow <a href="#" class="showmore_link">show more</a>  <span class="showmore" style="display:none"> More about Two </span></li>
    <li> Three <a href="#" class="showmore_link">show more</a>  <span class="showmore" style="display:none"> More about Three </span></li>
</ul>
<script type="text/javascript">

     $(document).ready(function() {
        $(".showmore_link").click(show_more_toggle);
     });

     show_more_toggle=function(){
        $(".showmore").slideToggle();
     }

</script>
</body>
</html>

Когда я нажимаю ссылку «показать больше», она показывает все три диапазона класса «showmore». Как я могу настроить обработчик кликов "show_more_toggle", чтобы он только открывал диапазон в том же элементе списка?

CONSTRAINT: я не могу использовать атрибуты "id" в диапазонах или элементах списка по другим причинам.

Ответы [ 4 ]

3 голосов
/ 12 октября 2011
$('a.showmore_link').click(function() {
    $(this).next().show();
});
1 голос
/ 12 октября 2011

другое решение:

$(document).ready(function() {
    $(".showmore_link").click(function() {
        $(this).parent().children(".showmore").slideToggle();
    });
});

http://jsfiddle.net/A7fM5/

1 голос
/ 12 октября 2011

Попробуйте -

 show_more_toggle=function(){
    $(this).siblings(".showmore").slideToggle();
 }

Демо - http://jsfiddle.net/ipr101/9GB9u/

0 голосов
/ 12 октября 2011

Используйте next() - это даст вам элемент span.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...