2012-05-28 3 views
1

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

Мое приложение имеет, и как только дом был загружен, мне нужно дважды щелкнуть по подобной кнопке, прежде чем он изменится, а затем, когда я нажму на другие, это нормально, но мне всегда нужно щелкнуть один раз для приложения почти «проснуться»

Есть ли лучшее решение?

$(document).ready(function() { 
    function runUpdate(url, item) { 
     $.ajax({ 
      type: "GET", 
      url: url, 
      cache: false, 
      success: function(data){ 
       if (data == '200') { 
        removeAddColor(item); 
       } 
      } 
     }); 
    } 

    $('.mini-like').live('click', function(){ 
     $('.mini-like').toggle(
      function() { 
       var item = $(this); 
       var href = item.attr('href'); 
       runUpdate(href, item); 
      }, 
      function() { 
       var item = $(this); 
       var rel = item.attr('rel'); 
       runUpdate(rel, item); 
      } 
     ); 
    }); 

    function removeAddColorFollow(item) { 
     var href = $(this).attr('href'); 
     var rel = $(this).attr('rel'); 
     if (item.hasClass('btn-success')) { 
      $(item).removeClass('btn-success').attr('href', href).attr('rel', rel); 
      $(item).find('i').removeClass('icon-white'); 
     } else { 
      $(item).addClass('btn-success').attr('href', rel).attr('rel', href); 
      $(item).find('i').addClass('icon-white'); 
     }; 
    } 
}); 
+3

'live' осуждается в 1.7 в пользу' on', поэтому, пожалуйста, используйте 'on' вместо –

+0

@NiftyDude, вы правы. +1 – Imdad

+0

что бы переписала версию для .live с .on выглядеть тогда, я не эксперт javascript ... – ApPeL

ответ

0

Код $('.mini-like').live('click',... должен быть помещен внутрь $(document).ready()

Вы можете использовать .on вместо .live. Как .on новый метод и .live осуждается теперь вы должны использовать .on

UPDATE Повторно написана версия будет

$(document).ready(function(){ 
$('.mini-like').on('click', function(){ 
    $('.mini-like').toggle(
     function() { 
      var item = $(this); 
      var href = item.attr('href'); 
      runUpdate(href, item); 
     }, 
     function() { 
      var item = $(this); 
      var rel = item.attr('rel'); 
      runUpdate(rel, item); 
     } 
    ); 
}); 

}); 

function runUpdate(url, item) { 
    $.ajax({ 
     type: "GET", 
     url: url, 
     cache: false, 
     success: function(data){ 
      if (data == '200') { 
       removeAddColor(item); 
      } 
     } 
    }); 
} 


function removeAddColorFollow(item) { 
    var href = $(this).attr('href'); 
    var rel = $(this).attr('rel'); 
    if (item.hasClass('btn-success')) { 
     $(item).removeClass('btn-success').attr('href', href).attr('rel', rel); 
     $(item).find('i').removeClass('icon-white'); 
    } else { 
     $(item).addClass('btn-success').attr('href', rel).attr('rel', href); 
     $(item).find('i').addClass('icon-white'); 
    }; 
} 
+1

Вам нужно только поместить его внутри '$ (document) .ready()', если скрипт не в самой нижней части страницы. Если вы поместите свой скрипт непосредственно перед закрывающим тегом '', тогда вам это не понадобится, поскольку DOM будет создан в этой точке. –

+0

@ AnthonyGrist отличная точка, я думаю, что это один из распространенных кодеков, которые веб-разработчики многократно используют, потому что онлайн-уроки говорят им об этом, а не потому, что они знают, почему –

+0

@AnthonyGrist. Следует избегать способа добавления скрипта после '''. Это не стандартная практика. – Imdad

1

Ну, если я не совсем так, вы только прикрепить пуговицу event to .mini-like после того, как он был нажат один раз. Попробуйте просто заменить

$('.mini-like').live('click', function() {... 

С

$(function() {... 

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

+0

попробовал это без везения :( – ApPeL

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