Подтвердить что ты не робот

Кнопки jQuery UI Dialog

при создании диалога с такими кнопками, как:

buttons:    {
            'button text': function(){                              
                // do something
            },

У меня есть доступ к кнопке внутри обработчика события клика?

$(this)

- это объект context/jQuery для всего диалогового окна.

Я сомневаюсь, что я должен быть таким креативным, как

$(this).find('button').attr(...)

отключить кнопку?

4b9b3361

Ответ 1

Документация для dialog() говорит:

Ключ свойства - это текст кнопка. Значение - это обратный вызов функция, когда кнопка щелкнул. Контекст обратного вызова элемент диалога; , если вам нужно доступ к кнопке, он доступен как цель объекта события.

$('#myDialog').dialog({
    'title': 'My Dialog Header',
    'buttons': {
        'My Button': function(event) {
            // here is the modification of the button
            // opacity set to 25%, all events unbound
            $(event.target).css({opacity: 0.25}).unbind();
        }
    }
});

Ответ 2

Формат кнопок в диалоговом окне - <button> с <span> внутри, например:

<button type="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only">
  <span class="ui-button-text">Button text</span>
</button>

Итак, когда вы нажимаете, фактическое событие click происходит на этом <span> или <button>, в зависимости от вашего стиля (например, поля на пролете), поэтому, чтобы <button> просто запустил ваш обработчик до кнопки, даже если вы уже на ней, например:

buttons: {
  'button text': function(e){
     $(e.target).closest("button") //this is the button, do something with it :)
  }
}

Вот краткая демонстрация этой работы