Диалог jQueryUI - текст кнопки не отображается - PullRequest
7 голосов
/ 17 февраля 2011

У меня странная ошибка с диалоговым окном, я нормально загружаю диалоговое окно, но всякий раз, когда я назначаю ему кнопку, хотя она будет отображать кнопку, она не будет отображать имя кнопки , Вот мой код, который успешно запускает диалог ...

jQuery('#'+message_div_id).dialog({
    modal:      ui_popup_modal
,   width:      ui_popup_width
,   height:     ui_popup_height
,   resizable:  false
,   draggable:  false
,   buttons:    {
                    "Ok": function() {
                        jQuery( this ).dialog( "close" );
                    }
                }
});

Это итоговый html из bugzilla после загрузки всплывающего окна ...

< button type="button" text="Ok" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false">< span class="ui-button-text">< /span>< /button>

Класс span - это область, которая должна содержать текст, но, как вы можете видеть, это не так. Есть идеи?

Ответы [ 7 ]

4 голосов
/ 24 августа 2012

Это работает для меня с jQuery UI v1.8.22 CDN (проверено):

$('div.ui-dialog button.ui-button').each(function() {
   $(this).children('.ui-button-text').html($(this).attr('text'));
});
4 голосов
/ 10 марта 2011

Это меня очень вдохновило, но у меня это не сработало, я сделал следующие модификации. Я думаю, что это работает лучше.

$('div.ui-dialog-buttonset button.ui-button span.ui-button-text').each(function() {
    $(this).html($(this).parent().attr('text'));
});
0 голосов
/ 04 января 2013

У меня была такая же проблема, но причина, по которой это было без текста, заключалась в том, что у меня были проблемы с зависимостями. Короче говоря, у меня было 2 jquery ui js, включенных в мой окончательный HTML-файл. Когда я оставил только 1 версию jquery ui, все работало, как и ожидалось.

0 голосов
/ 14 сентября 2012

Возникла та же проблема, и в результате я исправил jquery-ui.js

--- jquery-ui-1.8.23.js 2012-09-14 11:18:34.000000000 +-1000
+++ jquery-ui-1.8.23.js 2012-09-14 11:31:07.000000000 +-1000
@@ -9088,13 +9088,16 @@
                    .appendTo(uiButtonSet);
                // can't use .attr( props, true ) with jQuery 1.3.2.
                $.each( props, function( key, value ) {
                    if ( key === "click" ) {
                        return;
                    }
-                   if ( key in button ) {
+                   if ( key == "text" ) {
+                       button.html( value );
+                   }
+                   else if ( key in button ) {
                        button[ key ]( value );
                    } else {
                        button.attr( key, value );
                    }
                });
                if ($.fn.button) {
0 голосов
/ 29 февраля 2012

У меня была похожая проблема. Наконец, решил эту проблему путем обновления используемой версии jQuery с 1.3.2 до текущей (1.7.1) того времени. Я только что заметил, что используемая мной версия jQuery UI не является текущей (1.8.11 против текущей версии 1.8.18). Я попробую понизить jQuery обратно и обновить пользовательский интерфейс jQuery до текущего и посмотреть, что произойдет.

РЕДАКТИРОВАТЬ: jQuery UI 1.8.18 исправил проблему с использованием jQuery 1.3.2 и 1.7.1, поэтому похоже, что 1.8.11 имел дефект, из-за которого он был несовместим с 1.3.2 (I Я предполагаю, что это должно было быть с .18, я думаю, они не изменили бы совместимость между таким небольшим изменением версии).

0 голосов
/ 18 февраля 2011

Извините, новичок в SO.

Так или иначе, так как этот кусок кода был просто частью большей функциональности, и поскольку я не смог решить проблему с помощью примера кода на сайте jQueryUI, я решил решить эту проблему:

var button1_text = '';

(ui_popup_but1 != '') ? button1_text = ui_popup_but1 : button1_text = 'OK';

jQuery('button[text="button1"] span').html(button1_text);
0 голосов
/ 17 февраля 2011

Я думаю, что-то не хватает.Было бы здорово увидеть, как это работает.Я попытался создать тест, и я не получаю текст, но CSS отсутствует.Если я делаю это, это работает:

<button type="button" text="Ok" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" role="button" aria-disabled="false"><span class="ui-button-text">Text Here</span></button> 
...