2

これは私のコードです。私がやろうとしているのは、このULに追加される最初のliアイテムに「featured」クラスを追加することですが、このコードを試してみると、機能せず、挿入されたすべてのliに常にクラスが追加されます。 ulにliがなく、このULに追加された最初のli要素にのみ追加されるクラス。

私のコード:

$(".img_add").click(function(event){
    event.preventDefault();
    $('input:submit, p.upload-result').hide(); // hide submit button + results while working
    $(this).parent().after('<p class="loading"><img src="<?php bloginfo('template_directory'); ?>/img/loading_2.gif" alt="" /></p>');
    var path_img = $("#img_url").val();
    var count_images_lib = $(".upload-images-lib").length;
    $.ajax({
        url: '<?php bloginfo('template_directory'); ?>/ajax/add_image_url.php',
        type: 'POST',
        data: { path : path_img },
        dataType: 'json',
        success: function(data){
            $('.loading').remove();
            $('input:submit').show();
            if (data.status) {
                $('.upload-images-lib').prepend(data.message);
                if (count_images_lib == 1) {
                    $('.upload-images-lib li:first-child').addClass('featured');
                }
                alert(count_images_lib);
                $('p.upload-result').fadeIn(500).html('<span class="success"><?php _e('Your image has been added successfully.','sofa'); ?></span>');
            } else {
                $('p.upload-result').fadeIn(500).html('<span class="error">' + data.message + '</span>');
            }
        }
    });
});

私が欲しいのは、最初にロードされたliにのみクラスを追加することです。注意:data.messageは、実際にはhtml形式のリストアイテムです。

問題は、count_images_libが常に1を返すため、クラスが毎回追加されることです。最初/最後のセレクターではありません。

4

3 に答える 3

2

これを試しましたか。

$('.upload-images-lib li:first').addClass('featured');
于 2012-05-31T21:51:34.197 に答える
0

.first()関数を探している可能性があります。

于 2012-05-31T21:52:02.657 に答える
0

プリペンド操作を行っているので、最初にロードされるアイテムがリストの一番下にあると思います。したがって、:lastセレクターを使用して最後のアイテム(最初にロードされるアイテム)を取得し、それにクラスを与えます。

$('.upload-images-lib li:last').addClass('featured')
于 2012-05-31T21:53:31.147 に答える