0

我在这段代码中遇到了一些麻烦,我想判断next().children()div 是否没有长度,然后执行 ajax 要求。但它总是使 ajax 需要即使 div 有内容。

这是html代码:

<noscript>
<style>
.more{display:none;}
</style>
</noscript>
<!-- main content -->
<p class="click hidden" rel="12345">View more</p>
<div class="more">
    <h5>Relative post</h5>
    <div class="relative-post"></div>
    <!-- comment area -->
</div>
<!-- main content -->
<p class="click hidden" rel="23456">View more</p>
<div class="more">
    <h5>Relative post</h5>
    <div class="relative-post"></div>
    <!-- comment area -->
</div>

这是jquery代码:

jQuery(document).ready(function(){
    $(".click").live('click',function() {
        if($(this).next('.more').is(':visible')){
            $(this).next('.more').css('display','none');
        }else{
            $(this).next('.more').css('display','block');
        }
        if($(this).next('.more').children('.relative-post:has(*)').length){
            }else{
            var $this = $(this);
            var item_id = $this.attr('rel');
            $.ajax({
                url: "process",
                dataType: "html",
                type: 'POST', 
                data: 'post=' + item_id, 
                cache: false,
                success: function(data){ 
                    $this.next('.more').children('.relative-post').html(data);
                }
            }); 
                    }
        }
    });
});
4

3 回答 3

2
$(function() {
    $(document).on('click', '.click', function() {
        var next = $(this).next('.more');
        next.toggle(!next.is(':visible'));

        if (next.children('.relative-post:empty').length) {
            var item_id = $(this).attr('rel');
            $.ajax({
                url: "process",
                dataType: "html",
                type: 'POST',
                data: {post: item_id},
                cache: false,
                success: function(data) {
                    next.children('.relative-post').html(data);
                }
            });
        }
    });
});​

小提琴

于 2012-08-30T15:35:46.937 回答
0

尝试

if($(this).next('.more').children('.relative-post').html().length){

于 2012-08-30T15:28:01.333 回答
0

替换代码

if($(this).next('.more').children('.relative-post:has(*)').length)

有以下

 if($(this).next('.more').children('.relative-post').html())
于 2012-08-30T15:31:31.640 回答