純粋なJavaScript
最初の答えは特にjQueryに依存しています。これは、作成する必要のあるブラウザーを対象としたJavaScriptの量を大幅に削減するためです(モバイルの場合はjQuery mobileを使用できます)。ただし、質問でjQueryを記述していないため、純粋なJavaScriptでjQueryを実行するための最良の方法です(インラインイベントハンドラーを回避します)。
<script type="text/javascript">
/// wrap all our code in our own scope so to keep things local
(function(){
/// store any previous handler on the window.onload
var previousOnload = window.onload;
/// create our ready function
var fullyLoaded = function(){
/// grab the UL element
var li, ul = document.getElementById('target_ul');
/// grab the LI elements
var lis = ul.getElementsByTagName('li'), i = lis.length;
/// loop each LI and apply a click handler
while( i-- ){
if ( !(li = lis[i]) ){ continue };
/// internet explorer version
if ( li.attachEvent ) {
li.attachEvent('onclick', clickEvent);
}
/// pretty much everything else
else if ( li.addEventListener ) {
li.addEventListener('click', clickEvent);
}
}
}
/// create our click event listener
var clickEvent = function( e ){
/// fallback support for IE events
if ( !e ){ e = window.Event };
/// fallback support for IE .srcElement
alert( 'Clicked! ' + ( e.target ? e.target : e.srcElement ) );
}
/// override/set the window.onload with our own listener for window load
window.onload = function(){
/// trigger the our onload function
fullyLoaded();
/// once we've triggered our code 'onload', fire anyone elses.
if ( previousOnload ) {
previousOnload();
}
}
})();
</script>
<ul id="target_ul">
<li>test</li>
<li>test2</li>
</ul>
インラインイベントハンドラー
明らかに、より簡単な方法はonclick
LI要素に配置することですが、インラインイベントリスナーはさまざまな理由で避ける必要があります。
デザイン/マークアップをコードから分離するように常に努力する必要があります。これは、将来を見据えた作業に役立ち、スクリプトを壊すことを恐れずにマークアップを編集できることを意味します。
インラインイベントリスナーごとに適用できる関数は1つだけです。つまり、同じ要素で動作する可能性のある他のプラグインやライブラリと一緒にコードを実行したり、追加の相互作用機能を使用してコードを拡張したりすることがはるかに困難になります。
インラインイベントリスナーを介してJavaScriptメソッドがバインドされているために、メモリリークが発生する可能性のある状況は数多くあります。(携帯電話では、特にページが何度も読み込まれる場合や、インラインイベントリスナーが多数ある場合は、メモリ使用量に注意する必要があります)。
インラインイベントリスナーはグローバル関数にアクセスする必要があります。つまり、すべてのイベント関数は、グローバル名前空間を汚染するグローバルスコープの一部である必要があります(他のコードとの名前の衝突の可能性が高くなります)。これにより、管理が非常に厄介なコードになることがよくあります。 。
結論
上記の長く曲がりくねった純粋なJavaScriptを実装しなければならないという非常に複雑なことは、jQuery mobileの使用をお勧めする理由です;)それはすべての楽しみを奪いますが。