2013-07-11 6 views
1

Я использую JQuery Ajax для захвата данных. Я хочу, чтобы в моем коде были все привязанные теги, если кто-то нажимает на тег, он не срабатывает и не вызывает Ajax. Ниже приведен код, но он не работает.let anchor tag не срабатывает при нажатии

$('.one_item a').each(function(){ 
    $(this).live('click', function(){ 
     alert($(this).attr('href')); 
     return false; 
    }); 
}); 

Я использую JQuery версии 1.5, поэтому .live должен работать. Есть идеи? Приветствия.

+0

Эти динамически добавляются? Если это так, '.live' должен применяться к селектору, а не к определенным элементам. – Barmar

+0

Можете ли вы показать «HTML»? –

+1

Что означает «это не работает»? Вы имеете в виду, что предупрежденный href ошибочен? Или что анкерный хоп не предотвращается? Или что ничего не происходит? – Amadan

ответ

1

Вы можете использовать .live() непосредственно на селекторе:

$('.one_item a').live('click', function(e) { 
    e.preventDefault(); 
    alert($(this).attr('href')); 
}); 

Он должен работать, see this demo.

Однако он продолжает итерации alert($(this).attr('href'));. Как я могу сделать это только для элементов, которые я нажал?

Убедитесь, что вы не запуская цикл click() событий где-то еще, например:

$('.one_item a').each(function() { 
    $(this).click(); 
    // other stuff 
}); 
+0

'.on' не был добавлен до jQuery 1.7, он использует 1.5. – Barmar

+0

@Barmar да, пропустил это, исправлено. – acdcjunior

+0

Привет, Thx. Мне удалось заставить его работать с помощью .click. Тем не менее, он продолжает повторять предупреждение $ (this) .attr ('href'). Как я могу сделать это только для элементов, которые я нажал? – Alex

4

.live должен быть применен к селектору. Когда вы используете .each(), вы не получаете преимущества обработки событий по элементам, добавленным динамически, потому что вы просто выполняете итерацию по элементам, найденным в момент запуска цикла.

+0

Привет, THX для вашего ответа. Он по-прежнему продолжает повторять предупреждение $ (this) .attr ('href'). Есть 20 предметов с одинаковой структурой. (

) Как я могу сделать это только для элементов, которые я нажал? – Alex

+0

Извините, Barmar. Оно работает. Он выполняет итерацию, потому что я вызывал функцию внутри цикла. Мне стыдно!!! – Alex