【问题标题】:Trigger a button click inside a jQuery UI Dialog在 jQuery UI 对话框中触发按钮单击
【发布时间】:2011-09-23 14:54:51
【问题描述】:

这是一个非常简单的问题,我没有找到答案。我有一个对话框,在对话框内发生的某些事件中,我想单击其中一个对话框按钮。定义对话框的代码是:

var dialog = $('<div>').dialog({
    autoOpen: false,
    title : title,
    resizable : false,
    buttons : {
        'CANCEL' : {
            text : messages.Cancel,
            click : function(){$(this).dialog('close')}
        },
        'OK' : {
            text : messages.Ok,
            click : okButtonCallback
        }
    }
});

在我的事件中,我可以获得对话框,找到按钮,但我无法触发单击事件,并通过正确的引用传递。我这样做:

buttons = dialog.dialog('option', 'buttons');

我有每个按钮都有点击功能。如果直接或通过触发器('click')调用,它们会调用按钮的点击事件,但按钮本身不是对话框对象。 我看到了可以打电话的地方

buttons['OK'].apply(dialog);

但我的按钮绝对没有应用功能!

我不知道该怎么办!

【问题讨论】:

  • 如果你能得到按钮的引用,它应该像 button.click();或 $(button).click();
  • 如问题所述,它没有在函数内部传递正确的引用。
  • 我有点晚了,但奇怪的是我按照你的方式做了,“buttons['Ok'].apply(dialog);”它奏效了。我试过“按钮['Ok'].click.apply(dialog);”但它没有用。
  • 这里也一样 - "buttons['OK'].apply(dialog)" 对我也有用。
  • 根据新的 Jquery UI 文档,您需要从数组中检索一个按钮,其索引类似于按钮[1].click.apply(dialog);

标签: jquery jquery-ui


【解决方案1】:

首先,你需要得到buttons[0]而不是buttons['OK'],然后,它不是一个函数它是一个对象,试着像这样得到点击函数:

buttons[0].click.apply(dialog);

【讨论】:

  • 哦,不,就我而言,最新的 jquery ui(2019 年 6 月),它是按钮。好的,而不是按钮 [0]。此外,buttons.OK 是一个函数。
【解决方案2】:
$('.ui-button:contains("Ok")').click()

【讨论】:

  • 我专门用它来在 qUnit 中进行测试,它非常宝贵!
  • 我认为你没有阅读我问题的最后一部分,click() 函数或触发器('click') 可以工作,但是当这样做 this 里面click 函数不是指对话框(因为它指的是用户单击按钮时),而是指按钮本身。我的问题是如何克服这种差异,我解决了它。
【解决方案3】:

我用的是:

// Get the buttons
var buttons = $("#myDialog").dialog("option", "buttons");
// Calls the event
buttons["OK"]();

【讨论】:

  • 我在“OK”内调用“close”,并且错误:在初始化之前无法调用对话框上的方法;试图调用方法“关闭”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多