#jquery #html #css
#jquery #HTML #css
Вопрос:
В настоящее время я делаю комментарий и ставлю лайк системе, похожей на ту, что на facebook. Но я просто не могу понять, как выбрать конкретный div!
Мой текущий HTML выглядит так:
<div class='activoptions'><a href='#'>Like</a> <a href='#' class="addcomment">Add commentr</a> <a href='#'>Share</a>
</div>
<ul class="addcommentbox">
<li class="commentlist">
<div class="CommentBox">
<div class="CommentBoxPicBox">
<a href="">
<img src="" />
</a>
</div>
<div class="CommentBoxTextBox">
<div class="CommentBoxTextBoxName">Name</div>
<div class="CommentBoxTextBoxText">Some lovely text inside a lovely div</div>
<div class="CommentBoxTextBoxTime">x minutes ago - <a href="#">Like</a>
</div>
</div>
</div>
</li>
</ul>
Я установил CSS для «CommentBox» display:none;
, чтобы он был невидимым, и мой jQuery: $(".commentbox").show();
Именно так jQuery выбирает правильный div, который был запущен по ссылке, не видимой в приведенном выше коде, но называемой «.commentadd». Я везде искал jquery.net форум, и я нашел этот небольшой фрагмент кода.
$(".addcomment").click(function(){
var $this = $(this);
var child = $this.find('.addcommentbox').html();
$(child).show();
});
РЕДАКТИРОВАТЬ: Извините, что это так неточно… Я сразу отредактирую его и уточню для вас..
Итак, хорошо.. Я получаю все последние действия и статусы, и я даю всем им эту структуру HTML выше. Я хочу, чтобы, когда кто-то нажимает «Нравится», «комментарий» или «поделиться», тогда только то действие, которое они нажали, запрашивается через некоторый ajax и вставляется в базу данных.
Комментарии:
1. Не могли бы вы выразиться немного точнее? Я понятия не имею, о чем ты пытаешься спросить…
2. Хорошо, и что не так с найденным вами кодом, не могли бы вы, пожалуйста, предоставить нам больше вашего кода и подробно описать, в чем вы хотите, чтобы мы вам помогли
Ответ №1:
$(".addcomment").click(function(){
$('.CommentBox').show();
});
Должно быть достаточно. Попробуйте и дайте мне знать, если у вас возникнут новые проблемы.
Ответ №2:
Поскольку я не знаю вашу структуру HTML, я думаю, вы пытаетесь показать DIV, не зная идентификатора.
$(".addcomment").click(function(){
$(this).parent().find('.CommentBox').show();
});
Не могли бы вы опубликовать свою структуру HTML (в том числе where .addcomment
is), чтобы я мог заставить код работать?
Ответ №3:
Ваш javascript не совпадает с вашим HTML, так как все классы разные, но в опубликованном вами скрипте:
$(".addcomment").click(function(e){
e.preventDefault();
var $this = $(this);
var child = $this.find('.addcommentbox').html();
$(child).show();
});
дочерний элемент — это текстовый узел, а не список элементов jQuery. Удалите .html() с конца, и это покажет div с классом «addcommentbox». В другом примечании вы можете добавить e.preventDefault(); чтобы предотвратить действие по умолчанию при нажатии на ссылку (как я добавил выше).
Ответ №4:
Вы можете добавить разные «id» в свои «div» и сопоставить «id» следующим образом :
$("#my_id").show(); // or you can use "toggle" to show/hide
Подробные сведения:
$(".addcomment").click(function(){
$("#" $(this).attr('id')).show(); // or toggle
});
Надеюсь, мой ответ ясен, я не знаю…
Комментарии:
1. я не знаю, то ли это, что я ищу. я немного обновил свой пост. но то, что я ищу, — это способ — или сценарий для — выбора правильного .addcommentbox из многих. думайте об этом как о почти идентичной системе на facebook 🙂
Ответ №5:
Я думаю, что проблема в вашей структуре html. Если вы можете обернуть весь свой раздел «добавить комментарий» и «поле комментариев» в оболочку, вы можете выбрать его без проблем.
Смотрите этот пример jsfiddle