2009-07-13 24 views
1

我想为我的网站创建一个动态分页系统,并且我决定使用ajax回调函数来动态显示用户点击不同页面元素时的注释。我粘贴下面的代码作为我如何做的例子......我想问问你们,如果我做得对,或者如果他们有更好的方式来做到这一点,请指点我正确的方向: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(<?echo someNumber?>)可能会更好。这看起来很骇人,但我并不是专家。 – 2009-07-13 17:31:59

+0

yes页面跨度将动态生成...我正在寻找更多的专家对此的意见..谢谢 – halocursed 2009-07-13 17:36:08

回答

1

我不认为这是不合理的,但我想提两个念头。

首先,我认为这是分配的点击处理程序动态而不是实际上是把“点击=”到HTML(这是“渐进增强”的心脏)是一件好事。 Hoerver,你可能想要使用不同类型的选择器。按类查找一组元素是定义元素的较慢方法之一,尤其是在可能有多个页面的情况下。你可以把它们全部放在一个div中,做$(“#myDiv span”)。click()。这应该快得多。

其次,使假设页码将总是从跨度ID的第四个字符似乎有点脆弱。它可能会更好,只是使id本身的页码。

+0

谢谢我将采取这项作为我正在做什么的批准,我会采取您的建议,使id本身的页码... ..非常感谢... 他们是否有任何错误处理程序,我应该添加? – halocursed 2009-07-13 18:37:14

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变量,这会阻止用户一次加载多个页面)。