J'utilise un thème jQuery 1.10.3 personnalisé. J'ai téléchargé chaque suite du rouleau de thème et je n'ai intentionnellement rien changé.
Je crée une boîte de dialogue et j'obtiens un carré gris vide dans lequel l'icône de fermeture devrait être:
J'ai comparé le code généré sur ma page:
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<spanid="ui-id-2" class="ui-dialog-title">Title</span>
<button class="ui-dialog-titlebar-close"></button>
</div>
au code généré sur la page Dialog Demo :
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span id="ui-id-1" class="ui-dialog-title">Basic dialog</span>
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" aria-disabled="false" title="close">
<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>
<span class="ui-button-text">close</span>
</button>
</div>
EDIT: Les différentes parties du code sont générées par jQueryUI, pas moi donc je ne peux pas simplement ajouter les balises span sans modifier le fichier jqueryui js, ce qui semble être un choix inutile/inutile fonctionnalité normale.
Voici le javascript utilisé qui génère cette partie du code:
this.element.dialog({
appendTo: "#summary_container",
title: this.title(),
closeText: "Close",
width: this.width,
position: {
my: "center top",
at: ("center top+"+(window.innerHeight*.1)),
collision: "none"
},
modal: false,
resizable: false,
draggable: false,
show: "fold",
hide: "fold",
close: function(){
if(KOVM.areaSummary.isVisible()){
KOVM.areaSummary.isVisible(false);
}
}
});
Je suis perdue et j'ai besoin d'aide. Merci d'avance.
Je suis en retard pour celui-ci de temps en temps, mais je vais vous épater, prêt?
La raison en est que vous appelez bootstrap in, une fois que vous avez appelé jquery-ui in.
Littéralement, permutez les deux pour qu'au lieu de:
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="js/bootstrap.min.js"></script>
il devient
<script src="js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
:)
Edit - 26/06/2015 - Cela continue de susciter l'intérêt des mois plus tard, alors je pensait que cela valait la peine de le modifier. En fait, j'aime beaucoup le noConflict solution proposée dans le commentaire sous cette réponse et clarifiée par l'utilisateur Pretty Cool comme une réponse séparée. Comme certains ont signalé des problèmes avec l'info-bulle d'amorçage lorsque les scripts sont échangés. Je n'ai pas rencontrez ce problème cependant parce que j’ai téléchargé jquery UI sans l'info-bulle comme je n'en avais pas besoin parce que bootstrap. Donc, cette question ne jamais est venu pour moi.
Éditer - 22/07/2015 - Ne confondez pas
jquery-ui
avecjquery
! Tandis que Le code JavaScript de Bootstrap nécessite le chargement de jQuery avant, il ne repose pas sur jQuery-UI. Donc,jquery-ui.js
peut être chargé aprèsbootstrap.min.js
, alors quejquery.js
doit toujours être chargé avant Bootstrap.
Ceci est un commentaire sur la réponse principale, mais j’ai pensé que cela valait sa propre réponse car cela m’a aidé à résoudre le problème.
Si vous souhaitez que Bootstrap soit déclaré après l'interface utilisateur de JQuery (je l'ai fait parce que je voulais utiliser l'info-bulle Bootstrap), déclarer ce qui suit (je l'ai déclaré après $(document).ready
) permettra au bouton de s'afficher à nouveau (réponse de https: // stackoverflow .com/a/23428433/4660870 )
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
Cela semble être un bug dans la façon dont jQuery est livré. Vous pouvez y remédier manuellement avec quelques manipulations de dom sur l'événement Dialog Open
:
$("#selector").dialog({
open: function() {
$(this).closest(".ui-dialog")
.find(".ui-dialog-titlebar-close")
.removeClass("ui-dialog-titlebar-close")
.html("<span class='ui-button-icon-primary ui-icon ui-icon-closethick'></span>");
}
});
Ceci est rapporté comme cassé dans 1.10
http://blog.jqueryui.com/2013/01/jquery-ui-1-10-0/
phillip le 29 janvier 2013 à 7h36 a dit: Dans les versions CDN, le Le bouton de fermeture de la boîte de dialogue est manquant. Il n’ya que la balise button, le span ui-icon est missong.
J'ai téléchargé la version précédente et le X pour le bouton de fermeture est affiché.
J'ai trouvé trois correctifs:
Ce:
var bootstrapButton = $.fn.button.noConflict();
$.fn.bootstrapBtn = bootstrapButton;
aide Mais les autres boutons sont terribles. Et maintenant, nous n'avons pas de boutons bootstrap.
Je veux juste utiliser des styles de bootsrap et je veux aussi avoir un bouton de fermeture avec une icône. J'ai fait suite à:
Comment le bouton de fermeture a l'air après le correctif
.ui-dialog-titlebar-close {
padding:0 !important;
}
.ui-dialog-titlebar-close:after {
content: '';
width: 20px;
height: 20px;
display: inline-block;
/* Change path to image*/
background-image: url(themes/base/images/ui-icons_777777_256x240.png);
background-position: -96px -128px;
background-repeat: no-repeat;
}
J'ai eu exactement le même problème. Peut-être avez-vous déjà vérifié cela, mais l'avez résolu en plaçant simplement le dossier "images" au même emplacement que jquery-ui.css
Je me suis retrouvé avec le même problème et après avoir lu et essayé toutes les suggestions ci-dessus, je viens d'essayer de remplacer manuellement cette image (que vous pouvez trouver ici ) dans le CSS après l'avoir téléchargée et enregistrée dans le dossier images de mon app et voila, le problème est résolu!
voici le CSS:
.ui-state-default .ui-icon {
background-image: url("../img/ui-icons_888888_256x240.png");
}
J'utilise jQuery UI 1.8.17 et j'ai le même problème. De plus, des feuilles de style CSS supplémentaires ont été appliquées aux éléments de la page, notamment la couleur. Donc, pour éviter tout autre problème, j'ai ciblé les éléments d'interface utilisateur exacts à l'aide du code ci-dessous:
$("#mydialog").dialog('widget').find(".ui-dialog-titlebar-close").hide();
$("#mydialog").dialog('widget').find('.ui-icon ui-icon-closethick').hide();
Ensuite, j'ai ajouté un bouton de fermeture dans les propriétés de la boîte de dialogue elle-même: ...
modal : true,
title: "My Dialog",
buttons: [{text: "Close", click: function() {$(this).dialog("close")}}],
...
Pour une raison quelconque, je devais cibler les deux éléments, mais cela fonctionne!
En guise de référence, voici comment j'ai étendu la méthode ouverte selon la suggestion de @ john-macintyre:
$.widget( "ui.dialog", $.ui.dialog, {
open: function() {
$(this.uiDialogTitlebarClose)
.html("<span class='ui-button-icon-primary ui-icon ui-icon-closethick'></span><span class='ui-button-text'>close</span>");
// Invoke the parent widget's open().
return this._super();
}
});
just add in css
.ui-icon-closethick{
margin-top: -8px!important;
margin-left: -8px!important;
}
Je sais que cette question est ancienne, mais je viens d'avoir ce problème avec jQuery-ui v1.12.0.
_ {Réponse courte} _ Assurez-vous d'avoir un dossier appelé Images
à l'emplacement même emplacement vous avez jquery-ui.min.css
. Le dossier images doit contenir les images trouvées avec un nouveau téléchargement de jquery-ui
Longue réponse
Mon problème est que j'utilise gulp pour fusionner tous mes fichiers CSS en un seul fichier. Quand je le fais, je change l'emplacement du jquery-ui.min.css
. Le code CSS de la boîte de dialogue attend un dossier appelé Images
dans le même répertoire et à l'intérieur de ce dossier, il attend des icônes par défaut. puisque gulp ne copiait pas les images dans la nouvelle destination, il ne montrait pas l'icône x.
Un homme sage m'a aidé une fois.
Dans le dossier ...\css
où se trouve le fichier jquery-ui.css
, créez un dossier "images" et copiez-y les fichiers:
ui-icons_444444_256x240.png
ui-icons_555555_256x240.png
ui-icons_777620_256x240.png
ui-icons_777777_256x240.png
ui-icons_cc0000_256x240.png
ui-icons_ffffff_256x240.png
et l'icône de fermeture apparaît.
Si vous appelez dialog () dans la fonction js, vous pouvez utiliser les codes de conflit de boutons d'amorçage ci-dessous.
<div class="row">
<div class="col-md-12">
<input type="button" onclick="ShowDialog()" value="Open Dialog" id="btnDialog"/>
</div>
</div>
<div style="display:none;" id="divMessage">
<table class="table table-bordered">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Giri</td>
<td>Prasad</td>
<td>25</td>
</tr>
<tr>
<td>Bala</td>
<td>Kumar</td>
<td>24</td>
</tr>
</table>
</div>
<script type="text/javascript">
function ShowDialog()
{
if (typeof $.fn.bootstrapBtn =='undefined') {
$.fn.bootstrapBtn = $.fn.button.noConflict();
}
$('#divMessage').dialog({
title:'Employee Info',
modal:true
});
}
</script>
J'ai ce problème aussi. Voici le code qui est inséré pour le bouton de fermeture:
Lorsque j'éteins le style = "display: none:" sur le bouton, le bouton de fermeture apparaît. Donc pour une raison quelconque qui affiche: aucun; se prépare, et je ne vois pas comment contrôler cela. Donc, une autre façon de résoudre ce problème pourrait être de simplement remplacer l'affichage: aucun. Je ne vois pas comment faire cela cependant.
Je remarque que la réponse publiée par KyleMit fonctionne, mais crée un bouton X différent.
Je remarque également que ce problème n’affecte pas tous les dialogues de mes pages, mais seulement certains d’entre eux. Certains dialogues fonctionnent comme prévu. les autres n'ont pas de titre (c'est-à-dire que la plage contenant le titre est vide) tant que le bouton de fermeture est présent.
Je pense que quelque chose ne va vraiment pas et il se peut que l'heure ne soit pas à 1.10.x.
Mais après un travail plus approfondi, j’ai découvert que dans certains cas, les titres n’étaient pas correctement configurés et qu’après avoir résolu le problème, le bouton Fermer X réapparaissait comme il se doit.
J'avais l'habitude de définir les titres comme ceci:
('#ui-dialog-title-ac-popup').text('Add Admin Comments for #' + $ac_userid);
Cet identifiant n'existe pas dans mon code, mais est créé apparemment par jquery à partir de ac-popup et de ui-dialog-title. Une sorte de kludge. Mais comme je l'ai dit, cela ne fonctionne plus et je dois utiliser les éléments suivants:
$('.ui-dialog-title').text('Add Admin Comments for #' + $ac_userid);
Après cela, la question du bouton manquant semble être meilleure, bien que je ne sois pas sûr qu’ils soient vraiment liés.
Il suffit d'ajouter les éléments manquants:
<span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>
<span class="ui-button-text">close</span>