0

ここでは、JQueryUI ダイアログ ボックス ボタンのクリック イベントを処理するために定義した関数を示します。

$.fn.MenuItemRemove = function () {
$('#dialogMessage').dialog('close');
ajaxData = JSON.stringify(MenuItemAction);
$.ajax(
{
    type: "POST",
    url: "/DynaStructure/LayoutMenuItemRemoveItem/" + $("#hidLanguage").val(),
    data: ajaxData,
    contentType: "application/json",
    async: false,
    success: $.fn.MenuUpdated,
    error: function (xhr, ajaxOptions, thrownError) {
        $.fn.jqDialogAlert(cap_DialogErrorTitle, (xhr.responseText));
    }
});
}

ここに私のJQuery UI Confimダイアログボックスのコード

$.fn.jqDialogConfirm = function (title, message, confirmButtonTitle, cancelButtonTitle, okFunction, height, width) {
/// <summary>
/// Simple confirmation dialog box
/// </summary>
/// <param name="title" type="String">
/// Title of the dialog
/// </param>
/// <param name="message" type="String">
/// Message to display
/// </param>
/// <param name="confirmButtonTitle" type="String">
/// Confirm button title
/// </param>
/// <param name="cancelButtonTitle"type="String">
/// Cancel button title
/// </param>
/// <param name="okFunction" type="function">
/// Function called when Ok button clicked
///</param>
///<param name="width" type="int">
/// Width in pixels of the dialog box (default : defaultSmallDialogWidth)
///</param>
///<param name="height" type="int">
/// Height in pixels of the dialog box (default : defaultSmallDialogHeight)
///</param>
if (width == null) { width = defaultSmallDialogWidth; }
if (height == null) { height = defaultSmallDialogHeight; }
var dialogBox = $('#dialogMessage');
dialogBox.text(message);
$(dialogBox).hide();
$(dialogBox).dialog({
    title: title,
    autoOpen: false,
    resizable: false,
    modal: true,
    minHeight: height,
    minWidth: width,
    buttons: [
        {
            text: confirmButtonTitle,
            click: okFunction
        }
        ,
        {
            text: cancelButtonTitle,
            click: function () {
                $(this).dialog("close");
            }
        }
    ]
});
dialogBox.dialog('open');}

ここで私の Confirm Dialog への呼び出し:

$.fn.jqDialogConfirm("Are you sure ?", "Are you really sure  ?", "Ok","Cancel", "$.fn.MenuItemRemove", null, null);

[OK] ボタンをクリックすると、JavaScript デバッガーが jquery-ui-1.9.2 行 9418 で停止します。

    if ( hasButtons ) {
        $.each( buttons, function( name, props ) {
            var button, click;
            props = $.isFunction( props ) ?
                { click: props, text: name } :
                props;
            // Default to a non-submitting button
            props = $.extend( { type: "button" }, props );
            // Change the context for the click callback to be the main element
            click = props.click;
            props.click = function() {
                click.apply( that.element[0], arguments ); //<<<<<HERE
            };
            button = $( "<button></button>", props )
                .appendTo( that.uiButtonSet );
            if ( $.fn.button ) {
                button.button();
            }
        });
        this.uiDialog.addClass( "ui-dialog-buttons" );
        this.uiDialogButtonPane.appendTo( this.uiDialog );
    } else {
        this.uiDialog.removeClass( "ui-dialog-buttons" );
    }
},

メッセージ付き:

行: 9418 エラー: オブジェクトはプロパティまたはメソッド « apply » をサポートしていません

この問題の解決を手伝っていただけませんか?

4

2 に答える 2

1

あなたの電話は間違っています:

$.fn.jqDialogConfirm([snipped], "$.fn.MenuItemRemove", null, null);

okFunctionfunctionである必要がありますが、文字列を渡しています。あなたは合格する必要があります:

$.fn.jqDialogConfirm([snipped], $.fn.MenuItemRemove, null, null);

余談ですが、アプリケーション ロジックを jQuery 名前空間に配置することはあまりお勧めできません。私は個人的に何かを入れMenuItemRemoveますMyApp.MenuItemRemove

于 2013-06-24T09:16:34.037 に答える
0

問題が見つかりました:

$.fn.jqDialogConfirm("Are you sure ?", "Are you really sure  ?", "Ok","Cancel", "$.fn.MenuItemRemove", null, null);

引用符は関数呼び出しから削除する必要があります`

$.fn.jqDialogConfirm("Are you sure ?", "Are you really sure  ?", "Ok","Cancel", $.fn.MenuItemRemove, null, null);
于 2013-06-24T09:38:37.520 に答える