web-dev-qa-db-ja.com

クリックした要素のIDをjQueryで取得する方法

私は次のHTMLを持っています:

<a href="#" id="#1" class="pagerlink" >link</a>
<a href="#" id="#3" class="pagerlink" >link</a>
<a href="#" id="#2" class="pagerlink" >link</a>
/*etc.... */

および次のjQueryスクリプト:

$(document).ready(function() {

    var $container = $('.gallery_r').cycle({ 
        fx:     'scrollHorz', 
        speed:   500, 
        timeout: 0 
    }); 

    $('a.pagerlink').click(function() { 
        var id = $(this).attr('id');
        $container.cycle(id); 
        return false; 
    }); 

});

「pagerlink」リンクコントロールはjQuery Cycleスライドショーにあります。この行を入れ替えると:

$container.cycle(id); 

このため

$container.cycle(7); 

動作します...(明らかに、スライド番号7に移動するだけです)。だから、私の質問は、クリックされているリンクのIDを取得してその行に渡すにはどうすればよいですか?

前もって感謝します!

39
Adam

あなたのIDは#1であり、cycleは単に数字が渡されることを望んでいます。 cycleを呼び出す前に、#を削除する必要があります。

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id');
    $container.cycle(id.replace('#', '')); 
    return false; 
});

また、IDには#文字を含めるべきではなく、無効です(数値IDも無効です)。 IDをpager_1のようなものに変更することをお勧めします。

<a href="#" id="pager_1" class="pagerlink" >link</a>

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id');
    $container.cycle(id.replace('pager_', '')); 
    return false; 
});
68
Rocket Hazmat

ハッシュを先頭から削除するだけです。

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1);
    $container.cycle(id); 
    return false; 
}); 
7
Richard Dalton

IDは#1、#2などとして渡されます。ただし、#はIDとして無効です(CSSセレクターはIDに#をプレフィックスします)。

3
David Neale

まず、HTML5 DOCTYPEを使用している場合を除き、IDに番号を付けることはできません。次に、各IDの#を削除するか、これで置き換える必要があります。

$container.cycle(id.replace('#','')); 
2
Joseph Marikle