do_something()
関数を直接関数.live()
に入れて、匿名関数を避けることができます。それはいくつかの文字を節約します。 jQueryの1.7構文に変換するには
$("input").live("keyup", do_something);
$("select").live("change", do_something);
、あなたは(.live()
があなたのためにやった)デリゲートを使用する必要があります。あなたの入力要素と選択要素がdocument
の場合は、<form>
を使用できます。
$(document).on("keyup", "input", do_something);
$(document).on("change", "select", do_something);
そして、本当に1回の呼び出しでイベントとセレクタの両方を入れたい場合は、できます。とにかくあなたは同じ関数に行くので、デリゲートを使用しているので合計2つのイベントしかありません。実際に必要と思っている場合は、コールバックのイベントをチェックして、デモに表示されているようにセレクタに一致するイベントを確認することができます。
$(document).on("keyup change", "input, select", do_something);
デモ:http://jsfiddle.net/ThinkingStiff/6ZUMa/
HTML:
<input />
<select>
<option>1</option>
<option>2</option>
</select>
スクリプト:jQueryの1.7のように、.live()
方法は推奨されていることを
$(document).on('keyup change', 'input, select', do_something);
function do_something(event) {
//this if() statement probably isn't needed for your purposes
if((event.type == 'keyup' && event.target.tagName.toLowerCase() == 'input')
|| (event.type == 'change' && event.target.tagName.toLowerCase() == 'select')) {
//process event here
$('input').val(event.type);
};
};
あなたは以前のバージョンがはるかに読み秒以下だと思いませんか? –
真実ですが、もし私が優雅なソリューションを持っていれば、私はここで尋ねません:)私の擬似コードを例にして説明してください。 – jetsie
私は実際に関数で$(これ)を使って何かをする必要があるので、私の質問を編集したので、私は単一のセレクタを好む理由です。私の最初の編集で完全にはっきりしなかったかもしれない何か... – jetsie