无法在document.ready事件之外调用插件函数

时间:2015-02-09 13:40:06

标签: javascript jquery jsf

我正在使用jquery e JSF来构建我的应用程序的页面。在每个ajax请求之后,我需要绑定一些函数,比如mask,form messages等。 我的问题是在$(function()之外,我无法访问插件:

(function($) {
    // call setMask function on the document.ready event
    $(function() {
      // calling a function, the plugin is undefined.
        initMsgForm();
     // calling here, it works.
        if (typeof $.fn.areYouSure !== 'undefined') {
            $('#myForm').areYouSure({
                'message' : 'You have unsaved data'
            });
        }
    });
})(jQuery);

function initMsgForm() {
if (typeof $.fn.areYouSure !== 'undefined') {
    $('#myForm').areYouSure({
        'message' : 'Você tem informações não salvas'
    });
}

}

为什么我无法访问我的函数中的插件?

编辑: 这两个函数都在同一个文件中#main; js" 我包含js文件的xhtml:

<h:head>
<f:facet name="first">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <title></title>
</f:facet>

<f:facet name="middle">
    <h:outputStylesheet name="bootstrap/css/bootstrap.css" />

    <h:outputStylesheet name="css/dashboard.css" />
    <h:outputStylesheet name="css/main.css" />

    <script
        src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" />
    <script
        src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js" />
    <script
        src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.6.0/ui-bootstrap-tpls.min.js" />
    <h:outputScript name="js/jquery.are-you-sure.js" />
    <h:outputScript name="bootstrap/js/bootstrap.js" />
    <h:outputScript name="js/meiomask.min.js" />
    <h:outputScript name="js/main.js" />
</f:facet>

<f:facet name="last">
    <script
        src="https://cdnjs.cloudflare.com/ajax/libs/jquery.meiomask/1.1.14/meiomask.min.js" />
    <h:outputStylesheet name="css/font-awesome.css" />
</f:facet>

1 个答案:

答案 0 :(得分:0)

我发现了问题。我试图加载jQuery。默认情况下,primefaces已经加载了jQuery,所以我包含了两次。我删除了jQuery声明,现在它可以工作。