#jquery #html #css
#jquery #HTML #css
Вопрос:
Мне нужен вывод как «Порядок 4».
Требование: у меня будет много разделов для каждого «заказа», которые могут иметь или не иметь тег paragraph. Я хочу получить последний DIV тега абзаца, который содержит «class3».
В приведенном ниже HTML-формате всего 4 порядка, в будущем количество разделов DIV может увеличиться, то есть оно может увеличиться до 10 или 20. Если последний (10 или 20) тег DIV не содержит тега paragraph. я должен показать оповещение с каким-либо сообщением, иначе я должен показать номер заказа, например: Заказ 10. Каждый тег абзаца должен быть в DIV, который содержит «class3» .
Пример: ЕСЛИ имеется 10 разделов заказов. у нас всего 9 заказов, а последний DIV не содержит тега paragraph, я должен отображать предупреждение как «Нет заказа»
Я должен использовать «class1 и class2» в коде Jquery.
Что я пытаюсь: сначала я нахожу последний DIV «class1 class2», независимо от того, содержит он «class3» или нет, если «class3» содержится в последнем DIV, я пытаюсь получить тег paragraph.
Как этого добиться?
var lastMessageContent = $('.class1 .class2:last').html();
console.log(lastMessageContent);
//--I am getting last DIV
//var markDownExists = $(this).hasClass("markdown");
//alert(markDownExists);
if ($('.class1').parent().find('.class3').length > 0) {
// YES, the child element is inside the parent
console.log("yes")
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 4</p>
</div>
</div>
</div>
Комментарии:
1. Пожалуйста, используйте
<>
инструмент snippet, чтобы мы могли видеть, как вы запускаете свой код, в настоящее время мы не знаем, запускаете ли вы свой jquery, когда страница готова или когда вы нажимаете что-то или другую опцию.
Ответ №1:
Что-то вроде этого:
var $lastPInDiv = $('div > p').last();
if ($lastPInDiv.parent().is(".class3")) console.log("Yes")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 4</p>
</div>
</div>
</div>
Комментарии:
1. Да, это лучшее решение, поскольку op всегда будет уверен в получении последнего абзаца и без риска получить что-либо еще.
2. Но, если в последнем блоке div нет тега p, то это решение не будет работать.
3. Это зависит от того, должен ли p быть в последнем div или ему нужен последний p в любом div3
4. @HareshVidja в вопросе недостаточно информации, чтобы оправдать понижение.
Ответ №2:
Вы должны использовать селекторы :last
и :has()
psudo.
var lastMessageContent= $('.class1:last:has(p)').text();
console.log(lastMessageContent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p class="order"> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p class="order"> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p>Order 4</p>
</div>
</div>
</div>
Комментарии:
1. Спасибо, это сработало с «var lastMessageContent = $(‘.class1:last p’).html(); console.log(lastMessageContent);»
2. Проверьте мою правку на лучшее решение… если вы получите правильное решение, не пропустите, отметьте как правильное и проголосуйте.
Ответ №3:
Я просто создаю фрагмент кода с 3 сценариями, надеюсь, это поможет вам. Спасибо
Если последний заказ не содержит <div class"class3">
.
var lastOrder = $('.class1 .class2:last').children();
if(lastOrder.length) {
if(lastOrder.children().length) {
alert(lastOrder.children().text());
} else {
alert('No Order');
}
} else {
alert('No Order');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
Если последний заказ не содержит <p>
.
var lastOrder = $('.class1 .class2:last').children();
if(lastOrder.length) {
if(lastOrder.children().length) {
alert(lastOrder.children().text());
} else {
alert('No Order');
}
} else {
alert('No Order');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
</div>
</div>
</div>
Если последний заказ содержит <div class="class3">
и <p>
.
var lastOrder = $('.class1 .class2:last').children();
if(lastOrder.length) {
if(lastOrder.children().length) {
alert(lastOrder.children().text());
} else {
alert('No Order');
}
} else {
alert('No Order');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 4</p>
</div>
</div>
</div>
Ответ №4:
if($('.class2').last().find('.class3').length>0) //Checks whether last class2 div has class3
{
var text = $('.class3').last().find('p').text() // get class3 p tag text
}
else
{
alert('Div class3 not present')
}
Ответ №5:
используйте этот код, я надеюсь, это поможет вам
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 1</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 2</p>
</div>
</div>
</div>
<div class="class1">
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<div class="class3">
<p> Order 4</p>
</div>
</div>
</div>
<script>
$(document).ready(function(){
var a = $('.class3').last().find('p').length;
if(a > 0){
// do somthing....
}
});
</script>
Комментарии:
1. Пожалуйста, отредактируйте свой пост. Похоже, это не решает проблему