###やりたいこと
システムに影響を与えずにjQueryをアップデートしたい
###問題点
システムの jQuery のバージョンを 2 → 3 にあげたところ
$(...).load()
でエラーが出るようになりました
調べると load メソッドは引数に関数をとって $(...) 要素がロードされたときに実行するみたいなのですが
引数なしの load はどういう動作を行うのでしょうか
何もしないのであれば消してもいい気がするんですが
調べても引数なしの load を使っている例がみつからないので
何かしら動作するのであれば教えていただけるとうれしいです
追記:
どうもload メソッドは以下の2種類あって
https://api.jquery.com/load/#load-url-data-complete
https://api.jquery.com/load-event/#load-handler
Note: Prior to jQuery 3.0, the event handling suite also had a method named .load(). Older versions of jQuery determined which method to fire based on the set of arguments passed to it.
とあるのですが ver2 で引数なしの場合にどちらのload() が呼ばれているのでしょうか
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
.load()がロードしたいのか、ロード後の処理をトレースしたいのかによります
後者であれば.trigger('load')すればよいでしょう
投稿2018/09/07 07:25
総合スコア114839
0
もしかしたらたどり着いているかもしれませんが、エラーが出るようになったのはjQuery3で廃止された機能であるためです。
.load(), .unload(), .error()関数の削除
非推奨になっていたこれらの関数は削除されます。
イベントを付与する場合は.on()関数を利用してください。
例えば$("img").load(fn)は、$("img").on("load", fn)に変更してください。
引数なしのものの意図がどうこうというのは処理の流れの中で使われているものであるので、実際のコードを提示いただかないことには意図や意味についての回答は得られにくいと思います。
投稿2018/09/07 04:20
編集2018/09/07 04:22総合スコア80850
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/07 04:26 編集
退会済みユーザー
2018/09/07 04:35 編集
2018/09/07 04:35
2018/09/07 04:37
退会済みユーザー
2018/09/07 04:38
2018/09/07 04:47
退会済みユーザー
2018/09/07 04:55
2018/09/07 05:08
退会済みユーザー
2018/09/07 05:45
2018/09/07 05:48
退会済みユーザー
2018/09/08 18:18
2018/09/10 01:50
退会済みユーザー
2018/09/10 01:56
2018/09/10 02:30
退会済みユーザー
2018/09/10 02:33
0
マルチポスト
ルールを守って、マルチポストして下さい。
やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
むこうでまともな回答がもらえなかったので
私が考えるに「まともな回答」は誰でも思いつく、ごく当然の方法ですが、「難しそう」という理由で解読を諦めているのではありませんか。
初心者でもなんでも、(面倒くさそうと敬遠されがちな)基本に忠実な方法をとれば、必ず、解けます。
解決策
load を書いたのは自分ではないんですよね
私が考えた解決策は3つ。
.load()
以外のコードを解読し、残りの「.load()
と書かれたコード」の意図を推測する- jQuery公式ドキュメントを読む
- jquery-2.2.4.js を読む
一つ目はkatingさんご自身で実行する以外にありません。
jQuery公式ドキュメントを読む
jQuery 2.2.4 のリリース日は2016/05/20
2016/05/23当時のドキュメントを読むと、引数省略時の挙動は書いていません。
従って、公式では保証しない挙動になります。
私なら、怖くて使ってられませんが、コード制作者の意図は本人に聞いてみる以外にないでしょう。
jquery-2.2.4.js を読む
"load" でgrepすれば、該当コードは見つかります。
JavaScript
1jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " + 2 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 3 "change select submit keydown keypress keyup error contextmenu" ).split( " " ), 4 function( i, name ) { 5 6 // Handle event binding 7 jQuery.fn[ name ] = function( data, fn ) { 8 return arguments.length > 0 ? 9 this.on( name, null, data, fn ) : 10 this.trigger( name ); 11 }; 12} );
JavaScript
1// Keep a copy of the old load method 2var _load = jQuery.fn.load; 3 4/** 5 * Load a url into a page 6 */ 7jQuery.fn.load = function( url, params, callback ) { 8 if ( typeof url !== "string" && _load ) { 9 return _load.apply( this, arguments ); 10 } 11 12 var selector, type, response, 13 self = this, 14 off = url.indexOf( " " ); 15 16 if ( off > -1 ) { 17 selector = jQuery.trim( url.slice( off ) ); 18 url = url.slice( 0, off ); 19 } 20 21 // If it's a function 22 if ( jQuery.isFunction( params ) ) { 23 24 // We assume that it's the callback 25 callback = params; 26 params = undefined; 27 28 // Otherwise, build a param string 29 } else if ( params && typeof params === "object" ) { 30 type = "POST"; 31 } 32 33 // If we have elements to modify, make the request 34 if ( self.length > 0 ) { 35 jQuery.ajax( { 36 url: url, 37 38 // If "type" variable is undefined, then "GET" method will be used. 39 // Make value of this field explicit since 40 // user can override it through ajaxSetup method 41 type: type || "GET", 42 dataType: "html", 43 data: params 44 } ).done( function( responseText ) { 45 46 // Save response for use in complete callback 47 response = arguments; 48 49 self.html( selector ? 50 51 // If a selector was specified, locate the right elements in a dummy div 52 // Exclude scripts to avoid IE 'Permission Denied' errors 53 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 54 55 // Otherwise use the full result 56 responseText ); 57 58 // If the request succeeds, this function gets "data", "status", "jqXHR" 59 // but they are ignored because response was set above. 60 // If it fails, this function gets "jqXHR", "status", "error" 61 } ).always( callback && function( jqXHR, status ) { 62 self.each( function() { 63 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 64 } ); 65 } ); 66 } 67 68 return this; 69};
Re: kating さん
投稿2018/09/09 01:34
編集2018/09/09 02:06総合スコア18164
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/07 20:41
2018/09/08 00:15
退会済みユーザー
2018/09/08 05:02