Javascript 缺少:在JQuery.inArray(值,数组)中的属性id之后

Javascript 缺少:在JQuery.inArray(值,数组)中的属性id之后,javascript,jquery,firebug,Javascript,Jquery,Firebug,我收到一个firebug错误: 缺少:在属性id之后 错误源行: if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){ 这是附加代码: 由于我不清楚,编辑了文章并更新了内容。 我正在尝试创建一个框架,用于为项目创建对话。 对话框中可以有四个预定义按钮。 mmDialogButton是我尝试创建枚举类的方法。 if语句用于启用用户希望在对话框中使用的按钮 这里还有一些代码要说明 mmDialog.js ... function mmDialo

我收到一个firebug错误:

缺少:在属性id之后 错误源行:

if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){ 
这是附加代码:

由于我不清楚,编辑了文章并更新了内容。 我正在尝试创建一个框架,用于为项目创建对话。 对话框中可以有四个预定义按钮。 mmDialogButton是我尝试创建枚举类的方法。 if语句用于启用用户希望在对话框中使用的按钮

这里还有一些代码要说明

mmDialog.js

...

function mmDialog(title, spawnerId, widget, buttons){
...
$dialog.html(widget.getInitialHTML())
        .dialog({
            autoOpen: false,
            title: title + ' <img id="myJquerySpinner" />',
            buttons: {
                if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){
                    Cancel: function() {
                        $( this ).dialog( "close" );
                    },
                }
                if(jQuery.inArray(mmDialogButton.NEXT, buttons)){
                    "Next": function() {
                        widget.doNext();
                    },
                }
                if(jQuery.inArray(mmDialogButton.PREVIOUS, buttons)){
                    "Previous": function() {
                        widget.doPrevious();
                    },
                }
                if(jQuery.inArray(mmDialogButton.OK, buttons)){
                    "Ok": function() {
                        widget.doOk();
                    }
                }
            }...
jsp/html页面

            var title = "Test Dialog";
            var spawnerId = "myJqueryStarter";

            var mmDialogButtons = new Array();
            mmDialogButtons[0] = mmDialogButton.CANCEL; 
            mmDialogButtons[1] = mmDialogButton.OK; 
            mmDialogButtons[2] = mmDialogButton.NEXT; 
            mmDialogButtons[3] = mmDialogButton.PREVIOUS; 

            myPublishWidget = new mmPublishWidget();
            myDialogPublishWidget = new mmDialogWidget(myPublishWidget);
            myDialog = new mmDialog(title, spawnerId, myDialogPublishWidget , mmDialogButtons);
这:

应该是:

buttons: (function() {
    if(jQuery.inArray(mmDialogButton.CANCEL, buttons))
      return {
        Cancel: function() {
          $( this ).dialog( "close" );
         }
       };
       return null;
    })()
虽然很难说。看起来您试图做的是有条件地将“buttons”属性设置为带有标记的处理程序(即小的“close”函数)的某个对象。但是,您发布的代码在语法上是无意义的。我所做的更改将“inArray”测试包装在一个匿名函数中,该函数仅在测试为
true
时返回按钮对象

再说一次,我只是猜测这就是你想要做的。

这:

应该是:

buttons: (function() {
    if(jQuery.inArray(mmDialogButton.CANCEL, buttons))
      return {
        Cancel: function() {
          $( this ).dialog( "close" );
         }
       };
       return null;
    })()
虽然很难说。看起来您试图做的是有条件地将“buttons”属性设置为带有标记的处理程序(即小的“close”函数)的某个对象。但是,您发布的代码在语法上是无意义的。我所做的更改将“inArray”测试包装在一个匿名函数中,该函数仅在测试为
true
时返回按钮对象


同样,我只是猜测这正是您想要做的。

我想您的意思是,只有当按钮中有“取消”时才执行“关闭”,如果您可以这样写:

buttons: {
    Cancel: function() {
              if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){
                 $( this ).dialog( "close" );
              }
            },
    ....
编辑:

您可以根据需要预先定义按钮字典,将其传递到
。对话框(

对话框按钮={}
if(jQuery.inArray(mmDialogButton.CANCEL,buttons)){
对话框按钮[取消]=函数(){
$(此).dialog(“关闭”);
}
}
if(jQuery.inArray(mmDialogButton.NEXT,buttons)){
对话框按钮[“下一步”]=函数(){
widget.doNext();
}
}
if(jQuery.inArray(mmDialogButton.PREVIOUS,buttons)){
对话框按钮[“上一个”]=函数(){
doPrevious();
}
}
if(jQuery.inArray(mmDialogButton.OK,buttons)){
对话框按钮[“确定”]=函数(){
widget.doOk();
}
}
$dialog.html(widget.getInitialHTML())
.对话({
自动打开:错误,
标题:标题+“”,
按钮:对话框按钮
}...

我想您的意思是,只有当按钮中有“取消”时才执行“关闭”,如果您可以这样写:

buttons: {
    Cancel: function() {
              if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){
                 $( this ).dialog( "close" );
              }
            },
    ....
编辑:

您可以根据需要预先定义按钮字典,将其传递到
。对话框(

对话框按钮={}
if(jQuery.inArray(mmDialogButton.CANCEL,buttons)){
对话框按钮[取消]=函数(){
$(此).dialog(“关闭”);
}
}
if(jQuery.inArray(mmDialogButton.NEXT,buttons)){
对话框按钮[“下一步”]=函数(){
widget.doNext();
}
}
if(jQuery.inArray(mmDialogButton.PREVIOUS,buttons)){
对话框按钮[“上一个”]=函数(){
doPrevious();
}
}
if(jQuery.inArray(mmDialogButton.OK,buttons)){
对话框按钮[“确定”]=函数(){
widget.doOk();
}
}
$dialog.html(widget.getInitialHTML())
.对话({
自动打开:错误,
标题:标题+“”,
按钮:对话框按钮
}...

第二个代码段有语法错误。您在那里试图做什么?当找不到项时重新运行
-1
如果(jQuery.inArray(mmDialogButton.CANCEL,buttons)!=-1)
您有一个buttons对象,其中可能包含一些函数和其他称为“buttons”的变量在同一范围内定义?第二个代码段有语法错误。您在那里尝试执行什么操作?在找不到项时重新运行
-1
如果(jQuery.inArray(mmDialogButton.CANCEL,buttons)!=-1)
您有一个buttons对象,其中可能包含一些函数和其他称为“buttons”的变量在同一范围内定义?非常感谢,效果很好。唯一的小问题是取消未定义,并且我必须将if条件更改为!=-1。JQuery应该返回一个具有此方法名称的布尔值:)非常感谢,效果很好。唯一的小问题是Cancel未定义,我必须将if条件更改为!=-1。JQuery应该返回一个具有这样一个方法名的布尔值:)
dialog_buttons = {}

if(jQuery.inArray(mmDialogButton.CANCEL, buttons)){
 dialog_buttons[Cancel] = function() {
                             $( this ).dialog( "close" );
                          }
}

if(jQuery.inArray(mmDialogButton.NEXT, buttons)){
 dialog_buttons["Next"] = function() {
                             widget.doNext();
                          }
}

if(jQuery.inArray(mmDialogButton.PREVIOUS, buttons)){
 dialog_buttons["Previous"] = function() {
                                 widget.doPrevious();
                              }
}

if(jQuery.inArray(mmDialogButton.OK, buttons)){
 dialog_buttons["Ok"] = function() {
                           widget.doOk();
                        }
}

$dialog.html(widget.getInitialHTML())
        .dialog({
            autoOpen: false,
            title: title + ' <img id="myJquerySpinner" />',
            buttons: dialog_buttons
            }...