2013-07-21 2 views
0

У меня действительно были проблемы с моим скриптом: действительно, для работы в событии click требуется 2 клика. Сценарий таков:Для события jQuery click требуется двойной щелчок, чтобы работать

$('td#td_new').live('click', function() { 
    $.ajax({ 
    type: 'GET', 
    url: 'add_hobby.php', 
    data: { hobby: $('#ricerca_interests').val() }, 
    success: function(msg) {       
     nuovo_hobby="<tr id='hobby' class='checked' selezionato='si' hobby_id='"+msg+"' ><td id='hobby' width='179px'><div id='nome_hobby'>"+$('#ricerca_interests').val()+'</div></td></tr>'; 
     $(nuovo_hobby).appendTo("#interessilista"); 

     $('tr#new_hobby').hide().remove(); 


     }, 
    error: function() {alert("Error. Try later.");} 
}); 

    }); 
+0

Какую версию jQuery вы используете? –

+0

Действительно ли это занимает второй клик, или вы просто нажимаете второй раз до получения ответа AJAX? – David

+0

И «работа» означает, что именно? Что происходит и что вы ожидаете? Создайте демонстрацию http://jsfiddle.net/, которая воспроизводит проблему. –

ответ

0

Начиная с jQuery 1.7, метод .live() устарел. вы должны использовать .on() для присоединения обработчиков событий.

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

$('td#td_new').live('click', function() {

в

$(document).on('click','#td_new', function() {

затем откройте поджигатель или добавьте console.log('something') в часть success: - и убедитесь, что запрос ajax заканчивается по желанию и не продолжается.

другой, то, что нам нужно больше кода ...

получать удовольствие.

EDIT:

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

  1. Включите исходные скрипты (jquery + UI и т. Д.) В разделе главы.
  2. Удалить jquery.min ... source - вам это не нужно, потому что вы включили полный скрипт в любом случае.
  3. Я рекомендую обновление до JQuery 1.9 ... вы используете 1.7.2
  4. При использовании же идентификатор над различными элементами вы должны использовать class не id объявить их.
  5. Я рекомендую вам прикрепить событие click к div add_hobby как к классу, а не к td.

Вот небольшой демо использования на() и добавление кода на вашу страницу:

jsfiddle Demo

Теперь не стесняйтесь направить меня к вашей конкретной проблеме.

+0

Я включил .on(), но он все еще не работает, я также попытался добавить consoe.log ('blabla') в начале функции, но ничего ... Все идеи ? –

+0

напишите еще какой-нибудь код, пожалуйста ... вы не присоединяете событие, чтобы функция не срабатывала ... у вас может быть проблема с идентификатором элемента, убедитесь, что ваша кнопка имеет идентификатор 'id =" # td_new ". –

+0

Кстати - мы используем on() для динамически добавленных элементов ... это ваш случай? Мне действительно нужен еще один код, пожалуйста ... –

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