#jquery #html #css #conditional
#jquery #HTML #css #условные операторы
Вопрос:
Я пытаюсь написать условие jQuery, которое добавляет отступы к нижней части div, когда абзац внутри него превышает определенное количество символов. Я работаю над блогом, и на главной странице есть выдержки из блога, которые перекрывают друг друга на мобильных устройствах, если они слишком длинные. Исходный код выглядит примерно так:
<section class="lcp_catlist">
<div class="post-left"></div>
<div class="post-right">
<a href="#">Blog Title Here</a>
<p>A long blog excerpt would go here</p>
</div>
</section>
Мой jQuery, чтобы попытаться решить эту проблему, заключается в следующем:
if ( $('div.post-right p').text().length > 200 ) {
$(this).parent().parent().css({"padding-bottom" : "45px"});
}
Очевидно, что это не работает. Я чувствую, что это простое решение, которое я не нахожу. Кто-нибудь может помочь? Заранее спасибо.
Комментарии:
1. Проблема в том, что $(this) не указывает на ЭЛЕМЕНТ, но указывает, когда вы пишете событие типа click , поэтому jquery задается вопросом, что рассматривать как это
2. Есть ли способ указать, что я хочу, чтобы оператор в условном для элемента be, который получает примененный CSS?
3. var myElement = $(‘div.post-right p’); if ( myElement.text().длина> 200 ) { myElement.parent().parent().css({«заполнение снизу»: «45 пикселей»}); }
Ответ №1:
Есть пара моментов, которые выглядят подозрительно, я изложу свои мысли:
1. .text()
Метод
$('div.post-right p').html().trim().length > 200
2. $(this)
Убедитесь, что это указывает на правильный объект запуска
3. .parent()
Метод
Убедитесь, что .parent().parent()
точки указывают на нужный вам узел — здесь могут помочь инструменты разработчика Chrome.
4. .css()
альтернативный синтаксис
Я не уверен, имеет ли это значение, но попробуйте эти альтернативы:
.css({paddingBottom: 45px});
и синтаксис единого свойства
.css('paddingBottom', '45px');
Ответ №2:
Во-первых, я бы рекомендовал вам обернуть
тег, в котором выдержки из блога будут находиться в промежутке, поскольку я не верю, что вы можете добавить дополнение к
тег, также таким образом вы можете написать одну функцию, которая будет привязываться к каждому элементу сообщения в блоге и делать что-то вроде;
<section class="lcp_catlist">
<div class="post-left"></div>
<div class="post-right">
<a href="#">Blog Title Here</a>
<span class="blogEntry"><p>A long blog excerpt would go here</p></span>
</div>
</section>
и
$(document).ready(function(){
$('.blogEntry').each(function(){
var charCount = $('.blogEntry').length();
if(charCount >= 2000){
$('.blogEntry').css('padding-bottom','20px');
}
});
});
Комментарии:
1. Извините, позвольте мне уточнить. Исходя из вашего примера, я хочу, чтобы произошло, если charcount в BlogEntry равен> 200, тогда я хочу, чтобы section.lcp_catlist получал заполнение
Ответ №3:
В этом случае было бы полезно еще немного вашего JS. Я предполагаю $(this)
, что это неправильный элемент.
Я бы сначала определил это как переменную, а затем использовал бы ее вместо $(this)
перед привязкой к .parent()
методу.