2013-03-23 2 views
-1

Я разрабатываю веб-сайт, в котором перечислены некоторые продукты. на страницах я использовал разбивку на страницы jQuery для разбивки результатов. Для этого я использовал сценарий this..click() не работает должным образом в div

Таким образом, все детали продукта отображается в class="data" внутри <li></li>

<div class="content"> 
    <div id="loading"></div> 
<div id="container"> 
     <div class="data"></div> 
    <div class="pagination"></div> 
</div> 

В рамках этих продуктов у меня есть ссылка, которая позволяет продукты к добавлены в список.

<span class="addlist"> 
<a id="id_1249" class="m-btn" onclick="return false" href="http://index.php/action/add/">Add</a> 
</span> 

Я создал простую функцию, чтобы проверить событие щелчка

$(".addlist").click(function() { 
    alert("clicked."); 
}); 

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

После долгого тестирования я заметил, что когда я устанавливаю ссылку (<a href="index.php" class="addlist">Visible Text</a>) за пределами <div id="container">, событие click работает отлично. но если он находится внутри <div id="container">, он не работает. Я добавил $.noConflict(); в функции jQuery, но все равно бесполезен.

Может кто-нибудь, пожалуйста, сообщите мне, в чем проблема?

+0

http://jsfiddle.net/Ynk3f/ работает для меня – Andrey

+0

@Andrey: Я думаю, что это больше связано с тем, как скрипта является обертыванием скрипта в документе document.ready (function() {...}) 'или' window.onload = function() {}; 'как требуется. 'Return false' выглядит подозрительно, особенно если он находится внутри встроенного' onclick', который всегда выполняется первым, прежде чем какой-либо скрипт не будет встроен. Нам нужно знать, если код OPs завернут в 'document.ready..' или не может также получить полное представление HTML, в котором находится ссылка' a'. – Nope

+0

@Andrey это не работает, когда содержимое нагрузки для разбивки на страницы. – LiveEn

ответ

6

с момента addlist добавляется динамически вам нужно использовать on() делегированные событие ..

$("#container").on('click',".addlist",(function(e) { 
    e.preventDefault(); 
    alert("clicked."); 
}); 

link читать больше о на() делегированных события

+0

Спасибо mate ... :) – LiveEn

+0

приветствуется .. рад, что это помогло .... :) .. чеки – bipen

1

Попробуйте

$('#parent').on('click', '.addlist', function() { 
    alert("clicked."); 
}); 

элементы не могут существовать на документ готов.

+0

Конечно, вы правы. Я отредактировал ответ, как ответил bipen. – griffla

+0

yep .. on() делегированное событие сработало для меня :) – LiveEn

2

Я думаю, что возвращается ложь слишком быстро.

Try делает:

HTML

<span class="addlist"> 
<a id="id_1249" class="m-btn" href="http://index.php/action/add/">Add</a> 
</span> 

JS

$(".addlist").click(function(event) { 
    event.preventDefault(); 
    alert("clicked."); 
}); 
+0

Его код работает http://jsfiddle.net/ Ynk3f /, есть что-то, о чем он не упоминал. – Andrey

+0

@Andrey проблема была в том, что контент динамический. Решение - это то, что упоминалось в названии. 'on()' делегированное событие. – LiveEn

1

Это, вероятно, потому, что у вас есть return false как на клик обработчика на якоре. Удалите это, и он должен работать.

+0

без ложного перехода на следующую страницу, как только я нажму. то, что я хочу сделать, это сделать сообщение ajax и запросить сообщение, а не перейти к ссылке. – LiveEn

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