如何避免硬编码调用并在具有相同类名的div上获得相同的结果

时间:2011-01-05 22:59:03

标签: jquery

这是在html文件中。

<div class="pageNavPosition"></div>
<table></table>
<div class="pageNavPosition"></div>
<script>
showPageNave('pager','pageNavPosition');
</script>

这个代码在js文件中。

    this.showPageNav = function(pagerName, divname) {
    var pagerHtml = ['<a href="#" class="prev" onclick="' + pagerName + '.prev();"> &lt Prev </a> '];
    for (var page = 1; page <= this.pages; page++){
          pagerHtml.push('<a href="#" class="'+ page +'"onclick="' + pagerName + '.showPage(' + page + ');">' + page + '</a>  '); 
    }
    pagerHtml.push('<a href="#" class="next" onclick="'+pagerName+'.next();"> Next &gt;</a>');                  
    $("."+divname).append(pagerHtml.join(""));     
    if(this.pages > 9){
          $(".pageNavPosition a:lt(" + this.endMask + "):gt("+this.buffer+")") .css("display","none").hide();                                
          $('<a class="dotline" >.....</a>').insertAfter($(".pageNavPosition a:eq(" + Math.ceil(this.pages/2) + ")"));                                                           
     }                                       
} 

我想要做的是1,2,.....,9,10,无论是在桌子的顶部还是底部。这适用于表格上方的div而不是底部的div.i尝试使用$("."+divname而不是(硬编码)$(".pageNavPosition,并使用.each()但我没有成功。任何想法都是最受欢迎的。

3 个答案:

答案 0 :(得分:0)

你可能要关闭div标签吗?

  $(document).ready(function(){
    $(".page").html("My html code");
  });    


<div class="page"> </div>
   <div class="MyContent">
bla bla bla
 </div>
   <div class="page"> </div>

答案 1 :(得分:0)

每个应该适合你....但我认为你可能会遇到一些范围问题,尝试:

if(this.pages > 9){
    var that = this;
    $("." + divname).each(function() {
        var initial = $(this).find("a:eq(" + Math.ceil(that.pages/2) + ")");
        $(this).find("a:lt(" + that.endMask + "):gt("+that.buffer+")")
            .hide();
        $('<a class="dotline" >.....</a>')
            .insertAfter(initial); 
    });
 }

在任何情况下,这种方法在我看来有点复杂,你可以尝试一种类似于提及的方法......

答案 2 :(得分:0)

我在jsfiddle中尝试过: http://www.jsfiddle.net/jeXBh/

它适用于我的两个div。 (我还简化了一些代码。我认为最好在循环中创建点,而不是之后更改html。)