2009-07-13 3 views
1

Я пытаюсь создать динамическую систему разбиения на страницы для своего сайта, и я решил использовать функцию обратного вызова ajax, чтобы динамически показывать комментарии, когда пользователь нажимает на разные элементы страницы. Итак, я 'm вставляя приведенный ниже код в качестве примера того, как я это делаю ... Я хотел бы спросить вас, ребята, если я делаю это правильно или если это лучший способ сделать это, пожалуйста, укажите мне в правильном направлении :JQuery динамическая разбивка на страницы для комментариев мнение экспертов

JavaScript:

$(document).ready(function(){ 
$(".pages").click(function(){ 
var pageno=$(this).attr("id").slice(4,8);//slicing out numbers from the id i.e "1" from "page1" 
$.get("news.php", { pageno: pageno}, 
    function(data){ 
    $("#comments").html(data); 
    }); 
}); 
}); 

HTML:

<div> 
<span id="page1" class="pages" >1</span> 
<span id="page2" class="pages" >2</span> 
<span id="page3" class="pages" >3</span> 
</div > 
<div id="comments"> 
</div> 

PHP:

<div><?php echo $_REQUEST['pageno'];?></div> 
+0

Как раз из любопытства будут ли динамически генерироваться промежутки подкачки? Если это так, возможно, было бы лучше динамически установить метод click на что-то вроде click = "someMethod (). Это выглядит хакерским, но я не совсем эксперт. –

+0

да прокрутки страниц будут генерироваться динамически ... и я ищу больше экспертного мнения по этому вопросу. Спасибо за все это. – halocursed

ответ

1

Я не думаю, что это неразумно, хотя я упомяну две мысли.

Во-первых, я считаю, что удобно назначать обработчики кликов динамически, а не просто помещать «click =» в HTML (это является сердцем «прогрессивного улучшения»). Hoerver, вы можете использовать другой тип селектора. Поиск группы элементов по классам является одним из более медленных способов определения элементов, особенно если может быть много страниц. Вы можете поместить их все в div и сделать $ ("# myDiv span"). Click(). Это должно быть намного быстрее.

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

+0

Спасибо. Я возьму это как одобрение того, что я делаю, и я приму ваше предложение сделать идентификатор номером страницы сам по себе ... .. спасибо много .... Являются ли их какие-либо обработчики ошибок, которые я должен добавить? – halocursed

+0

, и я использовал «page1» вместо «1», потому что согласно стандартам W3c вы не должны указывать начальный номер с номерами. .... – halocursed

1
$(document).ready(function(){ 
    var isWorking = false; 
    $(".pages").click(function(){ 
     if (isWorking) 
     { 
      alert('Please wait for your preceeding request to finish.'); 
      return false; 
     } 
     isWorking = true; 
     var pageno = $(this).text(); 
     $.get("news.php", { pageno: pageno}, 
      function(data){ 
       $("#comments").html(data); 
       isWorking = false; 
      }); 
    }); 
}); 
  1. Похоже, что вы могли бы просто использовать текстовое содержимое пролета на номер страницы (см изменения .text()).

  2. Возможно, вы захотите, чтобы пользователи не пытались загрузить слишком много страниц одновременно (см. Переменную isWorking, которая должна помешать пользователям загружать более 1 страницы за раз).

+0

Спасибо, я рассмотрю все ваши предложения ... Являются ли их обработчиками ошибок, которые я должен добавить? – halocursed

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