ajax调用,在返回值中检查div

时间:2014-01-01 19:51:22

标签: javascript php jquery html ajax

我有一个加载更多按钮,点击调用如下所示:

$(document).ready(function(){
    var pageIndex = 1;
    $('#loadmorebuilds-div').click(function() {
        $('#buildcontainer').imagesLoaded( function(){
        $.ajax({
           url: 'includes/loadmorebuilds.php?type=trending&pageIndex=' + pageIndex,
           success: function(html) {
              var el = jQuery(html);
              jQuery("#buildcontainer").append(el).masonry( 'reload' );
              $("#loadmorebuilds-div").stop().fadeOut();
              pageIndex++;
              $("#buildcontainer").masonry()

              rowCount = el.find('#countvar').length;
              if (rowCount <= 7) {
                $("#loadmorebuilds-div").remove();
              }
           }

        });

    });

});
});

loadmore.php从数据库中选择限制为8的行。我对结果进行行计数以检查发送回的数量并回显这些(用于测试),我可以正确地看到它,例如8,8,然后5,当只有5个结果等。

同样,数据库结果也会反映出我想要它们呈现的方式,我也输出一个带有行数的div。例如

<div id='countvar'><?php echo $ammountofresults ?></div>

正如您所看到的,如果div'countvar'的值为7或更小,我想尝试从DOM中删除loadmore按钮。

rowCount = el.find('#countvar').length;
if (rowCount <= 7) {
   $("#loadmorebuilds-div").remove();
}

但无论多少结果,div总是被移除。我可以设置rowCount&gt; = 1,即使countvar div包含'8',它仍然会删除loadmore按钮。

对此有何帮助?

1 个答案:

答案 0 :(得分:1)

在JS中,.length()返回对象中的字符数。例如:

<div>1111</div> - Will return always 4.

而不是

rowCount = el.find('#countvar').length;
if (rowCount <= 7) {
   $("#loadmorebuilds-div").remove();
}

rowCount = $("#countvar").html(); /* Will return the code inside that object, or the num rows*/
if (rowCount <= 7) {
   $("#loadmorebuilds-div").remove();
}