覆盖jQuery函数

时间:2017-07-16 10:29:17

标签: jquery

我有一个“核心”javascript,其中包含一些我无法触及的jQuery函数,以及一个带有我编写的脚本的“自定义”javascript

我想用我的“自定义”功能覆盖一些“核心”功能。就像这样

// Core script (app.js), I can't touch this
var App = function(){
    // function to override or to inherit
    var handleBootstrapConfirmation = function(){
        $('[data-toggle=confirmation]').confirmation({
            btnOkClass: 'btn btn-sm btn-success',
            btnCancelClass: 'btn btn-sm btn-danger'
        })
    };
    return {
        init: function(){
            handleBootstrapConfirmation();
        }
    }
}();
$(document).ready(function() {
    App.init();
});

// Custom script (custom.js), I can touch this
var Custom = function(){
    // this should override the previous one
    var handleBootstrapConfirmation = function(){
        $('[data-toggle=confirmation]').confirmation({
            title: 'Custom title'
            // other options here
        })
    };
    return {
        init: function(){
            handleBootstrapConfirmation();
        }
    }
}();
$(document).ready(function() {
    Custom.init();
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mistic100-Bootstrap-Confirmation/2.4.0/bootstrap-confirmation.min.js"></script>
<p style="padding:120px 80px"><a href="#" class="btn btn-primary" data-toggle="confirmation">Delete?</a></p>

您看,应用handleBootstrapConfirmation()已执行但自定义handleBootstrapConfirmation()未执行:我必须对App.init();行进行评论才能使其正常工作

我知道我可以在自定义脚本中更改内容($('[data-toggle=confirm]')而不是$('[data-toggle=confirmation]')),但我想保持一致

有一种简单的方法吗?感谢

0 个答案:

没有答案