2010-12-30 3 views
0

質問があります。私は一意の増分IDと共有クラスを持つ8つのボタンを持っています。オブジェクトのクラスに対して定義された単一のイベントをトリガーする方法

<button class="btnChapter" id="btnChapter_1" value="1">1</button> 
<button class="btnChapter" id="btnChapter_2" value="2">2</button> 
<button class="btnChapter" id="btnChapter_3" value="3">3</button> 
... 

コードを複製してから私を防ぐために、私の代わりに、各ボタンのIDに個別にイベントを結合btnChapterクラスにクリックイベントを結合しました。

$('.btnChapter').click(function(){ .. do stuff .. }); 

#btnChapter_2の場合、click()イベントをトリガーするにはどうすればよいですか?以下は動作しないようです。

$('#btnChapter_2').click() 
+2

実際にボタンをクリックすると、イベントが発生しますか? – jondavidjohn

+1

問題を再現したテストケース(http://jsfiddle.net)を用意してください。 @JacobRelkinによると、あなたが示したコードは健全です。 – Phrogz

答えて

0

あなたのコードは大丈夫のようです。 clickイベントが実際にbuttonコントロールにバインドされているかどうかを確認できますか。

私が考えることができる理由の1つは、domが準備が整う前にjavascriptが実行されていることです。したがって、$('.btnChapter')セレクタは要素を返さない可能性があります。

クリックイベントがバインドされた直後に$('.btnChapter').lengthによって返される値を確認できますか。

注:ボタンを手動でクリックして、イベントが発生したかどうかを確認できますか?

Hereは、私がJSFIDDLEで行ったサンプルですが、それは私のためにうまくいきます。

+0

それは動作します。 「... do stuff ...」の部分が壊れていた。次の質問:この投稿を削除するにはどうすればよいですか? :-P – mrbinky3000

1

コードは完全に問題ありません。

私の意見で間違っている可能性がある唯一のことは、readyイベントの後でこのコードを実行していないことです。

liveの使用をお勧めします。

はこれを試してみてください:

$(function() { 
    $('.btnChapter').live('click', function(){ 
     //blah 
    }); 
    //... 
    $('#btnChapter_2').click(); 
}); 
+0

マークアップが変更されたり更新されたりしない場合、「ライブ」は必要ではないと思いませんか? – ifaour

関連する問題