<追記>
解決
関数分けの話 - スナックelve 本店
</追記>
↓は動くんだけど、cookieがない時の処理を元ネタのように関数に分けるとエラーが出てはまった。
jQuery(function ($) { var over18 = Cookies.get("over18"); if(over18 !== "Yes"){ $('#basic-modal-content').modal({ autoResize :true, autoPosition: true, onShow: function(dialog){ var modal = this; $('.yes',dialog.data[0]).click(function(){ var clifetime = new Date(); clifetime.setTime(clifetime.getTime()+(2*60*60*1000));//2時間 Cookies.set('over18','Yes',{expires: clifetime }); modal.close(); }); } }); } $('.remove_cookie').click(function(){ Cookies.remove('over18','',{ expires: 0 }); location.reload(); }); });
jQuery(function ($) { var over18 = Cookies.get("over18"); if (over18 !== "Yes") { console.log("this=" + this);//ここではthisは#document displayContents(); } $('.remove_cookie').click(function(){ Cookies.remove('over18','',{ expires: 0 }); location.reload(); }); }); function displayContents() { console.log("this=" + this);//ここではthisはwindow $('#basic-modal-content').modal({//index_design:1292 Uncaught TypeError: $(...).modal is not a function autoResize :true, autoPosition: true, onShow: function(dialog){ var modal = this; $('.yes',dialog.data[0]).click(function(){ var clifetime = new Date(); clifetime.setTime(clifetime.getTime()+(2*60*60*1000));//2時間 Cookies.set('over18','Yes',{expires: clifetime }); modal.close(); }); } }); }
でも、this使わないようにしてもエラーでちゃうんだよねぇ(´;ω;`)ウッ… 関数分けたところでもうmodal使えない。なんで?
jQuery(function ($) { var over18 = Cookies.get("over18"); if (over18 !== "Yes") { console.log(this); displayContents(); } $('.remove_cookie').click(function(){ Cookies.remove('over18','',{ expires: 0 }); location.reload(); }); }); function displayContents() { console.log(this); $('#basic-modal-content').modal({//index_design:1292 Uncaught TypeError: $(...).modal is not a function autoResize :true, autoPosition: true, onShow: function(dialog){ $('.yes',dialog.data[0]).click(function(){ var clifetime = new Date(); clifetime.setTime(clifetime.getTime()+(2*60*60*1000));//2時間 Cookies.set('over18','Yes',{expires: clifetime }); $.modal.close(); }); } }); }