関数を分けるとthisが変わっちゃう?

<追記>
解決
関数分けの話 – スナック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();
});
}
});
}

参考:
JavaScriptの関数について – Qiita

でも、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();
});
}
});
}

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です