2013-08-14 2 views
1

Я возвращаю список якорей с помощью цикла в Twig:переменная JQuery всегда иметь одинаковое значение

{% for entity in entities %} 
<a href="javascript:void(0);" class="show_post_anchor" data-post-id="{{ entity.id }}">{{ entity.id }}</a> 
{% endfor %} 

Конечной целью является, чтобы загрузить информацию в DIV с помощью AJAX/JQuery OnClick на якорь

$(document).ready(function() { 

    $('a.show_post_anchor').click(function(e){ 

     var id= $("a.show_post_anchor").attr("data-post-id"); 
     alert(id); 


     e.preventDefault(); 
     return false; 

    }); 
    }); 

Проблема заключается в том, что предупреждение всегда возвращает одно и то же значение onclick на разных якорях, даже если якоря отображаются корректно (с разными значениями данных после ввода). Я действительно не понимаю, где проблема возникает даже после нескольких часов размышлений, ваша помощь приветствуется.

+1

Попробуйте 'вар ID = $ (это) .attr (" данные пост- id ");' вместо 'var id = $ (" a.show_post_anchor "). attr (" data-post-id ");' –

+0

@DKM Пожалуйста, опубликуйте его как asnwer, так как он отлично работает. Также будет лучше дать некоторые детали, объясняющие различия между двумя способами. Большое вам спасибо. –

+0

Сделал это .......;) –

ответ

3

Попробуйте это:

Как ваши все <a> теги имеют .show_post_anchor класс и вы использовали $('a.show_post_anchor') так в DOM будет искать класс .show_post_anchor сначала он получит только первое значение, и $(this) представляет текущий щелкнул объект ,

$('a.show_post_anchor').click(function(e){ 
     var id= $(this).attr("data-post-id"); 
     alert(id); 
     e.preventDefault(); 
     return false; 
    }); 

Demo

4

Вам придется обратиться точный элемент, который был щелкнул, поэтому вместо того, чтобы:

var id= $("a.show_post_anchor").attr("data-post-id"); 

пишут:

var id= $(this).attr("data-post-id"); 

Это должно решить.

+0

Спасибо большое, в этом была проблема –

2

Вы используете селектор снова, который выбирает первый матч (первый ID), а не экземпляр селектора, как это:

var id= $(this).attr("data-post-id"); 
+0

Большое спасибо, что была проблема –

+1

jQuery может расстраивать этот путь, все выглядит правильно и просто не работает. Удачи тебе. –

+0

Большое спасибо, надеюсь, вам тоже удастся –

1
var id= $("a.show_post_anchor").attr("data-post-id"); 

это не получает то, что якорный ваш являются щелчок, вы должны дать значение от й

должны быть

var id= $(this).attr("data-post-id"); 
+0

Да, в этом была проблема. большое спасибо +1 –

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