Я создал систему голосования для моего проекта. Я попытался использовать приведенный ниже код, который работает правильно, но html()
не работает с этим. Кто-нибудь может мне помочь с этим?
$(document).ready(function() {
$(".up").click(function() {
$(this).addClass('active_vote');
$('.active_vote').closest('.rating').html('18');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="suggestions">
<li id="59">
<div class="vote active ">
<div class="support-feature-request-voted">
<div class="rating">
10
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hii</div>
<div class="desc">desc1</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
<li id="60">
<div class="vote active ">
<div class="support-feature-request-voted">
<div class="rating">
8
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hello</div>
<div class="desc">desc2</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
</ul>
2 ответа
Проблема в том, что .rating
не является родителем элемента .up
, который вызывает событие click
.
Чтобы это исправить, вы могли бы использовать closest()
для получения ближайшего общего родителя, в данном случае li
, а затем find()
для получения .rating
. Также обратите внимание, что оба оператора в обработчике событий могут быть объединены. Попробуй это:
let result2 = "Lorem ipsum";
jQuery(function() {
$(".up").on('click', function() {
$(this).addClass('active_vote').closest('li').find('.rating').html(result2);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="suggestions">
<li id="59">
<div class="vote active">
<div class="support-feature-request-voted">
<div class="rating">
10
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hii</div>
<div class="desc">desc1</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
<li id="60">
<div class="vote active">
<div class="support-feature-request-voted">
<div class="rating">
8
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hello</div>
<div class="desc">desc2</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
</ul>
Используйте parent
с find
.
$(document).ready(function() {
$(".up").click(function() {
$(this).addClass('active_vote');
$(this).parent().find('.rating').html('result2'); // Your upvote logic goes with result2
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="suggestions">
<li id="59">
<div class="vote active ">
<div class="support-feature-request-voted">
<div class="rating">
10
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hii</div>
<div class="desc">desc1</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
<li id="60">
<div class="vote active ">
<div class="support-feature-request-voted">
<div class="rating">
8
</div>
<span>Voted</span>
</div>
</div>
<div class="title">hello</div>
<div class="desc">desc2</div><br>
<a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
</li>
</ul>
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.