2013-09-06 5 views
0

У меня есть эта структура данных и вы хотите изменить содержимое всех моих элементов списка внутри моей ul.jQuery выбрать все элементы списка

<ul class="comments-holder"> 
    <li class="single-comment-holder"> 
    <div class="comment-body"> 
     <div class="comment-text"> 
     Some Text 
     </div> 
    </div> 
    </li> 
    <li class="single-comment-holder"> 
    <div class="comment-body"> 
     <div class="comment-text"> 
     Some Text 
     </div> 
    </div> 
    </li> 
</ul> 

Я знаю, что есть команда каждого() в JQuery, но я не знаю, как использовать его в моем контексте. Я работаю со сценарием, который сокращает тексты для меня, если они слишком длинны, и добавьте кнопку «Показать больше», чтобы расширить текст. Пример, который у меня есть, таков:

<div class="comment"> 
    This is a long comment text. 
    This is a long comment text. 
    This is a long comment text. 
    This is a long comment text. 
</div> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $(".comment").shorten(); 
    }); 
</script> 

Вопрос теперь в том, как именно каждая работа работает? Я думал об использовании его вот так: $(".ul.comments-holder .li.single-comment-holder .comment-body .comment-text").each(shorten(););, но он вообще не работает. Все использование каждого, что я нашел, было в форме ...each(function(){}), так что даже можно использовать его, как мне нужно?

ответ

0

Удалить в вашем селекторе дополнительные . и попробуйте еще раз, как:

$("ul.comments-holder li.single-comment-holder .comment-body .comment-text").each(function() { 
    $(this).shorten(); 
}); 

Или сокращенный вариант, как

$(".comment-text").each(function() { 
    $(this).shorten(); 
}); 

Или просто как

$(".comment-text").shorten(); 
+0

Так просто, чтобы понять синтаксис немного лучше, если я использую '$ укоротить();' это будет выглядеть («комментарий-текст.»). над всей моей страницей для элементов с 'class =" comment-text "и использовать функцию с ней? – user2747192

+0

@ user2747192 Да, будет. Но только F.Y.I. '$ (" ul.comments-holder li.single-comment-holder .comment-body .comment-text ")' также будет делать то же самое, поскольку jQuerry Sizzle Engine синтаксические сериализаторы справа налево. –

0

укоротить это плагин, так что вам нужно ссылаться на на объект обертку JQuery, и ваш селектор был перепутались, потому что вы использовали селектор класса вместо выбора элемента, как .ul вместо ul

$("ul.comments-holder li.single-comment-holder .comment-body .comment-text").shorten() 
0

Как насчет

$("li div.comment-text").each(function() {$(this).shorten()}) 
0

Я может быть то здесь отсутствует, но это не совсем ясно, что функция является методом объектов JQuery.

Я работаю со скриптом, который укорачивает тексты для меня, если они слишком долго

Если ваш скрипт расширяет $ .fn, то выше ответ на palaѕн велик. Если это просто функция, передать его следующим образом:

$(function(){ 
    $("div.comment-text").each(shorten); 
}); 
Смежные вопросы