2015-08-19 4 views
-2

Я программирую страницу комментариев, где я также хочу, чтобы функциональность удаляла комментарий. Но как мне получить доступ к элементам, например, внутри тегов <p> и <span> в моем классе .commentdiv, если .commentdiv был назначен переменной JavaScript? Немного неуклюже, чтобы объяснить, но проверьте код ниже.Доступ к элементу переменной в javascript

Я хочу использовать эту информацию для использования AJAX-вызова и удаления соответствующего комментария в моей базе данных.

Так что это, надеюсь, довольно простая вещь, но я все еще не могу найти ответ на свою проблему. Функция filter(), вызывающая объект parentDiv, не работает.

Мой HTML-код:

<div class="commentdiv"> 
    <p>$comment</p> 
    <a href="#" class="deletecomment">Delete comment</a> 
    <span class="commname">$name</span>, <span class="commtimestamp">$time</span> 
</div> 

Мой Javascript код:

var parentDiv = $(this).parent(); 
var name = parentDiv.filter('.commname').innerHTML; 
var comment = parentDiv.filter('p').innerHTML; 
var timestamp = parentDiv.filter('.commtimestamp').innerHTML; 
+0

Thats not PHP ... Также Id должен быть уникальным, поэтому вы не можете использовать его для повторяющихся элементов, например, вместо этого используйте класс. – EJTH

+0

Примечание: поскольку вы используете jQuery, вы должны использовать '.html()' вместо '.innerHTML'? – EJTH

+0

Правильно, забыл дважды проверить, что я написал! Конечно, это JavaScript, и я использовал классы. @EJTH Не является ли html() и .innerHTML тем же? –

ответ

0

Поскольку вы используете JQuery вы должны использовать jquery selectors. Вы также должны проверить многие из руководств о том, как использовать jquery или javascript для взаимодействия с dom. Google - ваш друг и codeschool имеют достойный учебник для начинающих.

Для доступа:

<p>$comment</p> 
$('.commentdiv p:first').html(); //gets the $comment value from the above 

<span class="commname">$name</span>, 
$('span .comname').html(); //gets the $name value from the above 

<span class="commtimestamp">$time</span> 
$('span .commtimestamp').html(); //gets the $time value from the above 
+0

Спасибо! Но разве это не удалит все мои комментарии? Я просто хочу получить доступ к элементам, в которых я нажимаю кнопку «deletebutton». Как мне это написать? –

+0

Приведенный выше код просто получает значения в указанных тегах html. Он ничего не делает. После этого вам решать, что вам нужно. – Craicerjack

0

Найдено решение!

Я подошел к моей проблеме немного по-другому. Вместо того, чтобы идти на один уровень вверх в .commentdiv, я искал брат и сестра в .deletebutton вместо с кодом ниже:

var name = $(this).siblings(".commname").html(); 
var comment = $(this).siblings("p").html(); 
var timestamp = $(this).siblings(".commtimestamp").html(); 

Ура!