2

所以我试图将我所有的函数保存在 1 个 jQuery 文件中。还在学习 jQuery 顺便说一句

但是,我遇到了不同页面上不存在 div id 并且它抛出错误的问题。我使用Pop Easy modal 插件。我打电话$('.modalLink').modal()来初始化插件。它适用于我的主页,但会在我的常见问题解答页面上引发错误,因为没有带有modalLink类的 div。

对象没有方法“模态”

我不想创建单独的文件,那么您将如何重新编写它?

$(document).ready(function () {

    // PopEasy on Home Page
    $('.modalLink').modal({
        trigger: '.modalLink',          // id or class of link or button to trigger modal
        olay:'div.overlay',             // id or class of overlay
        modals:'div.modal',             // id or class of modal
        animationEffect: 'fadeIn',      // overlay effect | slideDown or fadeIn | 
        videoClass:'video',             // class of video element(s)
        close:'.closeBtn'               // id or class of close button
    });

    /*... other code for other pages go below  ....*/

    // Register Page
    $('.login-window input').on('click focusin', function() {
        this.value =  '';
    });

    // FAQ Page
    //  FAQ sidebar menu
    $('#faq-btn-general').click(function() {
        $(this).parent().addClass('faq-blue');
        $('#img-general-on').show();
        $('#img-general-off').hide();
        $('#dl-general').fadeToggle("slow", "linear");
    });

});
4

4 回答 4

3

如果没有 method .modal(),那可能是因为您没有加载适当的库来支持该.modal()方法。

对于一个表现良好的 jQuery 方法(我假设.modal()是),应该没有问题:

$('.modalLink').modal();

如果.modalLink对象不存在。jQuery 对象将$('.modalLink')是空的,并且调用.modal()它不会做任何事情(或者无论如何 jQuery 方法应该是这样编写的)。如果该.modal()方法表现不佳,那么您可以自己保护它:

// makes sure the .modalLink object exists and that the `.modal()` method exists
var modalObj = $('.modalLink');
if (modalObj.length && modalObj.modal) {
    modalObj.modal(...);
}
于 2013-06-14T18:11:54.903 回答
1

我建议在向它们添加事件之前检查对象是否存在

你可以这样做。

if ( $('#myDiv').length ){}

所以要替换你的一些代码,它看起来像这样

if ( $('.login-window input').length ){
    $('.login-window input').on('click focusin', function() {
        this.value =  '';
    });
}
于 2013-06-14T18:12:00.680 回答
1

您可以测试是否存在方法,例如

if ($.fn.modal) {
    $('.modalLink').modal({
        trigger: '.modalLink',          // id or class of link or button to trigger modal
        olay:'div.overlay',             // id or class of overlay
        modals:'div.modal',             // id or class of modal
        animationEffect: 'fadeIn',      // overlay effect | slideDown or fadeIn | 
        videoClass:'video',             // class of video element(s)
        close:'.closeBtn'               // id or class of close button
    });
}

但这可能很长......您还可以在您签入 javascript 文件的主体上添加一个 ident 类。

if ($('body').hasClass('forum-section')) { // 仅包含与该部分相关的代码 }

希望有帮助

于 2013-06-14T18:12:21.230 回答
1

尝试类似:

if ( $('.myClass').length > 0){
  $('.myClass').modal(....)
}
于 2013-06-14T18:17:32.183 回答