1

クラスのインスタンスをクリックして、同じクラスの以前のインスタンスの数を数えて警告しようとしていますが、現在、クリックされたインスタンスの前の数ではなく、すべてのインスタンスが表示されているようです。

これが私が現在jsfiddleと一緒に持っているコードです

HTML:

<div class="locationGallery">
    <div><span class="prev">next</span><span class="polaroidImage" ref="1">IMAGE 1 SIMULATION</span><span class="next"></span></div>
    <div><span class="prev">next</span><span class="polaroidImage" ref="2">IMAGE 2 SIMULATION</span><span class="next"></span></div>
    <div><span class="prev">next</span><span class="polaroidImage" ref="3">IMAGE 3 SIMULATION</span><span class="next"></span></div>
    <div><span class="prev">next</span><span class="polaroidImage" ref="4">IMAGE 4 SIMULATION</span><span class="next"></span></div>
</div>

jQuery:

var numImgs = $('div.locationGallery .polaroidImage').length;
var prevImages = $('.polaroidImage').prevAll().length;


$('.polaroidImage').click(function(){
    var title1 = $('div.locationGallery').next('.polaroidImage').attr('ref');
    alert(prevImages);
});

CSS:

.next{
     margin-left:25px; 
     display:none;
}
.prev{
     margin-right:25px; 
     display:none;
}
4

2 に答える 2

1

これは、すべての.polaroidImage要素を選択しているためであり、選択した要素prevAllの前の兄弟要素のみを選択します。親要素を選択してから、ターゲット要素を選択する必要があります。

$('.polaroidImage').click(function(){
    var prevImages = $(this.parentNode).prevAll().find('.polaroidImage').length;
    alert(prevImages);
});

http://jsfiddle.net/kJLy6/

オブジェクトをキャッシュしたい場合は、次のメソッドを使用できindexますslice

var $prevImages = $('.polaroidImage');

$prevImages.click(function(){
    var index = $prevImages.index(this),
        count = $prevImages.slice(0, index).length;
});

http://jsfiddle.net/TKxAP/

于 2013-05-17T09:25:47.450 に答える
0

これを使って

 $('.polaroidImage').click(function(){
   var title1 = $('div.locationGallery').next('.polaroidImage').attr('ref');
   var prevAll = $(this).parent().prevAll('div').length;
   alert(prevAll);
});
于 2013-05-17T09:28:50.193 に答える