0

HTML:

<div class="promo_tumbs col_12">
    <div data-dir="prev" class="prev"></div>
    <div data-dir="next" class="next"></div>
    <div class="promo_tumbs_centar">
        <a href="#first"><div class="promo_tumb promo_tumb_current">Test</div></a>
        <a href="#second"><div class="promo_tumb">Test</div></a>
        <a href="#thrid"><div class="promo_tumb">Test</div></a>
        <a href="#fourh"><div class="promo_tumb">Test</div></a>
        <a href="#fifth"><div class="promo_tumb">Test</div></a>
        <a href="#fifth"><div class="promo_tumb">Test</div></a>
        <a href="#fifth"><div class="promo_tumb">Test</div></a>
    </div>
</div>

JavaScript:

function Slider(container, nav) {
    this.container = container;
    this.nav = nav;

    this.li = this.container.find('li');
    this.li_width = this.li.first().width();
    this.li_len = this.li.length;

    this.thumbs = this.nav.find('a');

    this.current = 0;
}

Slider.prototype.transition = function(coords) {
    this.container.stop().animate({
        'margin-left': coords || -(this.current * this.li_width)
    })
}

Slider.prototype.set_current = function(dir) {
    var pos = this.current;
    if (dir === 'next') {
        pos++
    }
    else if (dir === 'prev') {
        pos--
    }
    this.current = (pos < 0) ? this.li_len - 1 : pos % this.li_len;

    return pos;
}

var slider = new Slider($('div.promo_inner ul'), $('div.promo_tumbs'));
slider.nav.find('div').on('click', function() {
    if ($(this).attr("data-dir") === undefined) {
        var index = slider.thumbs.index($(this).parent('a'));

        console.log(index)
    } else {
        slider.set_current($(this).data('dir'));
    }
    slider.transition();
})​
​

フィドルリンク

要素をクリックすると、クリックされた要素のインデックスと-1の2つの値が得られます。ここで何が起こっているのですか?-1を失い、インデックス値のみを取得するにはどうすればよいですか?

4

3 に答える 3

2

Call event.stopPropagation(); in order to stop the propagation of event Demo on JsFiddle

This will give you more idea what elements causing double event Reason for multiple events JsFiddle

于 2012-05-31T09:54:40.993 に答える
1

nav.find()にも一致し<div class="promo_tumbs_centar">ます。試すfind(".promo_tumb")

于 2012-05-31T09:42:09.573 に答える
0

.promo_tumb divをクリックすると、.promo_tumbs_centarもクリックされます。

これを使用する必要があります:

slider.nav.find('.promo_tumb')

それ以外の

slider.nav.find('div')
于 2012-05-31T09:44:12.537 に答える