2015-06-21 3 views
-1

Я пытаюсь добавить окно комментария, как вы можете открыть в Facebook, когда вы нажимаете «комментарий». Поэтому я хочу выбрать самый предыдущий идентификатор, содержащий «users_log_id» текущей ссылки «comment», на которую я нажимаю.JQuery: Как выбрать конкретный предыдущий идентификатор динамически?

Примечание: После того, как «users_log_id» всегда идентификатор текущего идентификатора, как это: users_log_id38

Я попробовал это так, но это не похоже, чтобы найти селектор Я ищу:

$('.comment').on('click', function(e) { 
    e.preventDefault(); 
    var selector = $('[id$=users_log_id]').prev(); 
    console.log(selector); 
}); 

Так что, во-первых, я просто пытаюсь найти правильный идентификатор выбора, чтобы добавить этот комментарий, о котором я упоминал.

EDIT:

Я просто попытался ответ guest271314 и использовал это:

$('.comment').on('click', function(e) { 
    e.preventDefault(); 
    var selector = $(this).closest('[id^=users_log_id]').prev(); 
    console.log(selector); 
    selector.append("test"); 
}); 

Сейчас он работает, но только если идентификатор Я ищу является родителем comment класса Я щелкнул (как кажется). См. Ссылку на изображение для визуализации HTML. Стрелки показывают, где comment класс я нажав на это: http://s27.postimg.org/52n3x0jgj/SOOO.jpg

+0

Это, вероятно [$ = селектор] (https://api.jquery.com/attribute-ends-with-selector/), который ищет и 'id' ** заканчивается ** с помощью 'users_log_id'. Измените его на '[id^= users_log_id]', который ищет 'id' ** start ** с' users_log_id' и повторите попытку –

+0

Я просто подумал о своем коде ... там должен быть 'этот', правый ? Поскольку мне всегда нужен самый последний идентификатор текущей позиции, я нажимаю «комментарий». – AlexioVay

+0

Да, это, вероятно, должно быть одно. Я думаю о чем-то вроде этого '$ (this) .find ('[id^= users_log_id]'). Prev();' –

ответ

1

Примечание: После того, как «users_log_id» всегда идентификатор текущего идентификатора как это: users_log_id38

Попробуйте с использованием .prevAll() , Attribute Starts With Selector [name^="value"]

$('.comment').on('click', function(e) { 
    e.preventDefault(); 
    var selector = $(this).prevAll('[id^=users_log_id]').filter(":first"); 
    console.log(selector); 
}); 
+0

Спасибо, это работает, но только если id является родительским div, как кажется. Я сделал изображение, чтобы визуализировать его. Стрелки показывают, где нажимать ссылку «комментарий»: http://s27.postimg.org/52n3x0jgj/SOOO.jpg – AlexioVay

+0

@Vaia Трудно определить точный 'html' из изображения, может включать' html' в Question? – guest271314

+0

Это было бы немного для публикации. Вот почему я сделал снимок экрана и отредактировал изображение. Проблема в том, что в одном случае ссылка «comment», на которую я нажимаю, находится на том же уровне, что и идентификатор, который я ищу. В другом случае (где он работает) это родитель. Похоже, мне просто нужна аналогичная функция типа «ближайшая», которая также выполняет поиск на одном уровне? – AlexioVay

Смежные вопросы