2016-01-11 2 views
0

Функция ниже работает только после обновления страницы. Когда страница снова обновляется, она перестает работать снова и так далее.Событие Click работает только на втором посту

<button id="moreBtn" type="button" class="archive btn btn-default col-sm-12"></button> 
function ShowHideBtn() { 
    var newss = 5; 
    var numItems = $(".news").length; 
    hidenews = "- Show Less Products"; 
    shownews = "+ Show More Products"; 

    $(".news:not(:lt(" + newss + "))").hide(); 
    $("hr:not(:lt(" + newss + "))").hide(); 

    if (numItems >= newss) { 
     $(".archive").show(); 
     $(".archive").html(shownews); 

     $(".archive").on("click", function (e) { 
      e.preventDefault(); 
      if ($(".news:eq(" + newss + ")").is(":hidden")) { 
       $("hr:hidden").show(); 
       $(".news:hidden").show(); 
       $(".archive").html(hidenews); 
      } else { 
       $("hr:not(:lt(" + newss + "))").hide(); 
       $(".news:not(:lt(" + newss + "))").hide(); 
       $(".archive").html(shownews); 
      } 
      return false; 
     }); 
    } else { 
     $(".archive").hide(); 
    } 
} 

Заранее спасибо

+4

Где и когда вы звоните 'ShowHideBtn'? –

+0

Используйте .toggle() для обхода этого уродливого («: hidden») – wernersbacher

+0

Между кнопкой и функцией нет связи. – Hemal

ответ

0

Это предположение, как нет достаточной информации, чтобы подтвердить это. Пожалуйста, предоставьте полную страницу HTML/код:

Поскольку запросы страницы в браузере не имеют статуса (так что он не может знать, что это все остальные нагрузки), это звучит как проблема времени. HTML обычно будет загружаться медленнее в первый раз, поэтому, если JS-код равен , а не, расположенный после элемента, который он ссылается (или находится внутри готового обработчика DOM), тогда он может не найти элемент .archive. Это скорее случайный, чем «каждый другой загрузчик страницы», хотя, если это проблема времени.

Выполните одно из следующих действий:

  1. Поместите код JS (или JS скрипт включает) после того, как элемент они ссылаются. Для этого параметра перед закрывающим тегом </body>.
  2. Поместите свой код внутри готового обработчика DOM, тогда его положение не имеет значения. например например:

    $ (document) .ready (function() { // Ваш код здесь });

или версия укороченный РОМ готов:

$(function(){ 
    // Your code here 
}); 
Смежные вопросы