【问题标题】:jQuery - cannot call methods on dialog prior to initializationjQuery - 在初始化之前无法调用对话框上的方法
【发布时间】:2013-07-27 21:23:30
【问题描述】:

这个真的让我很烦。我的控制台中出现未捕获错误:初始化前无法调用对话框上的方法;试图调用方法'close'

$( function() {
    $('#search_all_notes_input').dialog({
        autoOpen: false,
        show: {
            effect: "blind",
            duration: 1000
        },
        hide: {
            effect: "explode",
            duration: 1000
        }
    });

    /* Make the Search div a button and open dialog on click */
    $( "#search_all_button" ).button().click(function() {       
        $( "#search_all_notes_input" ).dialog( "open" );
    });
});

$('#submit_search_all_button').click( function () {
    var searchText = $('#search_all_text').val();       
    var query = location.search.split('=');
    var urlMrn = query[1];
    formData = { mnr: urlMRN, search_text: searchText };
    console.log(formData);
    //$.post('note_search.php', formData, getMatchedNotes(data));
    $(this).dialog('close');
});

有什么想法吗?我在对话框 div 中使用按钮元素,而不是自定义对话框按钮。此外,脚本是在我的 HTML 页面的最后加载的

【问题讨论】:

  • this 在您的点击事件中指的是按钮本身,而不是模式/对话框,因此您不能在其上调用 close。您需要在初始化对话框的 DOM 元素上调用 close。您在open 事件上执行此操作:$( "#search_all_notes_input" ).dialog( "open" );,当您希望关闭它时定位相同的元素。

标签: javascript jquery dialog initialization


【解决方案1】:

问题是您在#submit_search_all_button 按钮上调用dialog('close'),而不是您最初创建对话框的#search_all_notes_input 元素。

用这个代替$(this).dialog('close');

$('#search_all_notes_input').dialog('close');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2013-03-08
    • 2014-04-13
    相关资源
    最近更新 更多