何が最良の方法の追加のイベントJavaScript?
-
09-06-2019 - |
質問
見る2つの設定イベントJavaScript:
追加のイベントを直接ターでタグ内のようになります:
<a href="" onclick="doFoo()">do foo</a>
設定によりJavaScriptのようになります:
<a id="bar" href="">do bar</a>
追加インタビュー <script>
部内 <head>
部又は外部にJavaScriptファイルのように使用している場合は、 prototypeJS:
Event.observe(window, 'load', function() {
$('bar').observe('click', doBar);
}
私の最初の方法は読みやすくなり、維持のためにJavaScript行動に直接結合するリンクがなくクリーンでユーザーのリンクをクリックした場合でも、ページが完全にロードにあたることが重要であるJavaScriptの誤りの場合あり).
第二の方法は、クリーナー(アクションの追加時にページが完全にロードができなくなったアクションリンクのタグです。
る方法が最良でしょうか。
Aキラー回答までに完全にお願いいたします。
解決
私の経験では、ポイント:
1)最も重要なことは一致する必要があります。とは思わないのいずれかの方法では必ずしも読みやすくなり、まったら、それを守ってほしい。まだ迷う両方の方法で使用されていプロジェクト(または悪くても同一ページで行うとともに、検索を開始するには、通話やんですぐに知ることが多いです。
2)第二種類、すなわち Event.observe()
メントで同じまたは非常に類似した行動を取り入れたもの複数のイベントでのことが明らかな場合すべての通話は同じです。また、コンラート-指摘の通り、場合にはこ扱うことができ付けます。
他のヒント
私の最初の方法は読みやすくなり、維持
がその場で発音を確認することが、反対する。ことに留意することが時に複数のイベントハンドラにされるものとされます。
宣言のすべてのイベントがひとつの中央位に編成行為の場所にあるサイトです。切り替える必要性がある場合、うまい検索のためのすべての場所に電話する機能だけを使用することもできます。を追加する場合にさらに要素をすべて同じ機能のあいだに忘れないようにハンドラることによって、代わりに、それは多くの場合、十分にしてもらうことを目的にして、を宣言するクラスまでも変わらない全くな論理的に所属するコンテナの要素のすべての子要素に配線す。から実際のコード:
$$('#itemlist table th > a').invoke('observe', 'click', performSort);
この有線のイベントハンドラのすべての列のヘッダテーブルのテーブルソート可能.想像のすべての列ソート可能。
私の第二の方法は一般的に優先で保有することで情報行動(すなわちJavaScript)とは別のマークアップ同じようにCSSを分離-プレゼンテーションマークアップ等を行っています。
同意することで、もう少し見えにくいというページが良いツールのように開いているのがfirebugを支援するころがいっぱいあるんです!だけでなくIDEへの支援を続ければ、混合のHTMLやJavascriptます。
このアプローチ本当にそしてプロジェクトの成長およびょうを添付してほしいという同じjavascriptのイベントを色々な要素の多くのページを移動してください。その場合は、なりやすいシングルのペースをつけのイベントによる検索の多くの異なるHTMLファイルを見つけ、特定の機能が呼び出されます。
も利用できますaddEventListener(IE)/attachEvent(IE)
チェックアウト: http://www.quirksmode.org/js/events_advanced.html
これらきを添付して機能又は複数の機能)のイベントを既存のDOMオブジェクトです。ものが国連-付属。
一般的に、使用している場合は、重大な量のjavascript、実際に研究を進めてきたお javascript 読み、html.では、どのような onclick=X
htmlを明らかにし、この不足分のコード--他の統語的依存関係が作品との場合をしている読みのhtmlをwebブラウザでjavascriptの実行を動的な振る舞いを理解するのページです。
私の個人的嗜好はjQueryの外部jsファイルのjsは完全に分離されます。Javascriptは置でインラインすなわち、最初の例によって最良の選択肢と思います。を見るとhtmlのサインを使用していることjsをスクリプトを含んでいる。
例を取り付けや取り扱い)イベントがこのようになっ
var myObject = {
allLinkElements: null,
init: function()
{
// Set all the elements we need
myObject.setElements();
// Set event handlers for elements
myObject.setEventHandlers();
},
clickedLink: function()
{
// Handle the click event
alert('you clicked a link');
},
setElements: function()
{
// Find all <a> tags on the page
myObject.allLinkElements = $('a');
// Find other elements...
},
setEventHandlers: function()
{
// Loop through each link
myObject.allLinkElements.each(function(id)
{
// Assign the handler for the click event
$(this).click(myObject.clickedLink);
});
// Assign handlers for other elements...
}
}
// Wait for the DOM to be ready before initialising
$(document).ready(myObject.init);
このアプローチがなければならないときに便利でしたいすべてのjs組織として利用できる特定のオブジェクトのタスクとすべく含まれています。
もちろん、大きな利益をのせjQuery(または別のも図書館)にはクロスブラウザを支援する(き)を介する生活がより簡単になります
図書館のようなゆい、jQueryの提供方法の追加のイベントを一度だけ、DOMは、前のウインドウです。onload.いことも保証を追加できる複数のイベントハンドラにてご利用いただけるようにスクリプトから異なった源泉の異なるイベントハンドラを上書きします。
で実践的な選択肢としては、
ます。場合はスクリプトは、簡単なるのが白日のもとに走り、そのページを作成しinit関数のように:
window.onload = function () {
init();
}
function init() {
// actual function calls go here
doFoo();
}
ます。ていれば多くのスクリプトやプランをマッシュアップスクリプトから、様々な発生源の利用とライブラリー onDOMReady
方法を安全に追加イベントハンドラ