プラグインを使用すると、1つのオブジェクトでDOM操作コマンドを転送できます。つまり、多くのメソッド呼び出しを1つの関数呼び出しに置き換えることができます。
使用する
$.executeObject({"#my_div": ["text", " "]}) // $.executeObject('{"#my_div": ["text", " "]}') // JSON
これはなぜですか?
サーバーから送信されたJavaScriptはデバッグが容易ではないため、オブジェクトを渡し、コードを最小限に抑えることをお勧めします。 代わりに
$('table tr:first').remove(); $('input#name').val('John'); $('#my_div').addClass('error').text(' ');
オブジェクトを作成して、executeObject関数に渡すことができます。
var = { 'table tr:first': 'remove' , 'input#name': ['val', ''] , '#my_div': [ ['addClass', 'error'] , ['text', ' '] ] } $.executeObject()
特に、ERBにテンプレートの形でsomethingい何かを蓄積した場合:
$('input#name').val('<%= escape_javascript(@person.name) %>') $('#my_div').addClass('error').text('<%= escape_javascript(@error) %>')
コントローラで発行できます(摩擦の例):
obj = {'input#name' => ['val', @person.name], '#my_div' => [%w[addClass error], ['text', @error]]} render js: "$.executeObject( #{obj.to_json} )" # ,
そして一般に捨てるテンプレート(ビュー)。 コールバックコールバックとして$ .executeObjectを指定することもできます。
$.post('/my/url', {: ''}, $.executeObject)
応答として、準備されたオブジェクトを返すだけです:
render json: obj
つまり、データを転送できる場所で実行可能コードを転送する必要はありません。
戻り値
関数は、成功した呼び出しの数を返します。 失敗した呼び出しは黙って無視されます。