スナックelve 本店

バツイチ40代女の日記です

関数を分けると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(); 
            });
        }   
    });
}