Czy można otworzyć okno dialogowe interfejsu użytkownika jQuery bez paska tytułu?
254
Myślę, że najlepszym rozwiązaniem jest skorzystanie z tej opcji dialogClass
.
Wyciąg z dokumentów interfejsu użytkownika jquery:
podczas init: $('.selector').dialog({ dialogClass: 'noTitleStuff' });
lub jeśli chcesz po init. :
$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');
Więc stworzyłem jakieś okno dialogowe z opcją dialogClass = 'noTitleStuff' i css w ten sposób:
.noTitleStuff .ui-dialog-titlebar {display:none}
zbyt proste !! ale zastanowiłem się, dlaczego moja poprzednia metoda wiercenia klasy id-> nie zadziałała. W rzeczywistości, kiedy wywołujesz .dialog()
metodę div, którą przekształcasz, stajesz się dzieckiem innego diva (prawdziwy dialog div) i być może „bratem” titlebar
div, więc bardzo trudno jest znaleźć to drugie, zaczynając od pierwszego.
Doszedłem do rozwiązania problemu dynamicznego usuwania paska tytułu.
Spowoduje to usunięcie wszystkich elementów z klasą „ui-dialog-tytułowy” po wyrenderowaniu okna dialogowego.
źródło
#example .ui-dialog-titlebar...
. Będzie to działało w obie strony; ale JavaScript ostatecznie ustawia css, więc nie widzę korzyści z nie robienia tego w css na początek. To naprawdę nie robi różnicy - z czymkolwiek czujesz się najlepiej :)Wierzę, że możesz to ukryć za pomocą CSS:
Możesz również zastosować to do określonych okien dialogowych z
dialogClass
opcją:Sprawdź okno dialogowe „ Theming ”. Powyższa sugestia korzysta z
dialogClass
opcji, która wydaje się być w drodze na korzyść nowej metody.źródło
Używam tego w swoich projektach
źródło
$(document).ready(function() { $('#video').click(function(){ $( "#dialog" ).dialog().siblings('.ui-dialog-titlebar').removeClass('ui-widget-header'); }); });
$("#myDialog").dialog('open').siblings('.ui-dialog-titlebar').remove();
to najlepsza odpowiedź moim zdaniem +1 dla tego wiersza kodu$("#myDialog").prev().hide()
lub$("#myDialog").prev(".ui-dialog-titlebar").hide()
.To działało dla mnie:
źródło
Spróbuj użyć
Ukryje to wszystkie tytuły okien dialogowych
źródło
W rzeczywistości istnieje jeszcze inny sposób, używając
widget
bezpośrednio tego okna dialogowego :W ten sposób możesz uzyskać Widżet Dialogu
a następnie zrobić
aby ukryć tylko
titlebar
w tym oknie dialogowymi w jednym wierszu kodu (lubię łańcuch):
Nie ma potrzeby dodawania w ten sposób dodatkowej klasy do okna dialogowego, wystarczy przejść do niego bezpośrednio. Dobra robota dla mnie.
źródło
Uważam, że jest bardziej wydajne i bardziej czytelne, aby użyć otwartego zdarzenia i ukryć przed nim pasek tytułu. Nie lubię wyszukiwać nazw klas na poziomie strony.
Prosty.
źródło
Możesz użyć jquery, aby ukryć pasek tytułu po użyciu dialogClass podczas inicjowania okna dialogowego.
podczas init:
Korzystając z tej metody, nie musisz zmieniać pliku css, a to również jest dynamiczne.
źródło
Lubię przesłonić widżety jQuery.
Możesz więc teraz ustawić, czy chcesz wyświetlać pasek tytułu, czy nie
źródło
Jeśli masz wiele okien dialogowych, możesz użyć tego:
źródło
Jest to najłatwiejszy sposób, aby to zrobić i usunie pasek tytułowy tylko w tym jednym konkretnym oknie dialogowym;
źródło
Jedną z rzeczy, które odkryłem podczas ukrywania paska tytułowego okna dialogowego, jest to, że nawet jeśli ekran nie jest wyświetlany, czytniki ekranu nadal go podnoszą i będą go czytać. Jeśli już dodałeś własny pasek tytułu, odczyta oba, powodując zamieszanie.
To, co zrobiłem, zostało usunięte z DOM przy użyciu
$(selector).remove()
. Teraz czytniki ekranu (i każdy inny) nie zobaczą go, ponieważ już nie istnieje.źródło
Spróbuj tego
zastąpić
divid
odpowiednimid
źródło
Ta następna forma rozwiązała problem.
źródło
Myślę, że najczystszym sposobem byłoby utworzenie nowego widżetu myDialog, składającego się z widżetu dialogowego minus tytułowy kod kreskowy. Wycięcie tytułowego kodu kreskowego wygląda prosto.
https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js
źródło
Pomogło mi to ukryć pasek tytułu okna dialogowego:
źródło
Tak można to zrobić.
Przejdź do folderu motywów -> baza -> otwórz jquery.ui.dialog.css
Odnaleźć
Obserwacje
jeśli nie chcesz wyświetlać titleBar, po prostu ustaw display: none, jak to zrobiłem poniżej.
Podobnie w przypadku tytułu.
Teraz jest przycisk zamykania, możesz również ustawić go na brak lub ustawić
Przeprowadziłem wiele poszukiwań, ale nic nie przyszło mi do głowy. Spowoduje to jednak, że cała aplikacja nie będzie miała przycisku zamykania, paska tytułowego okna dialogowego, ale można to również rozwiązać, używając jquery oraz dodając i ustawiając css za pomocą jquery
tutaj jest na to składnia
źródło
.dialogs()
i tylko 1 lub mniej potrzebujesz tych ustawień, wówczas istnieją alternatywne trasy niż globalne zastosowanie ustawień w ten sposób.Dla mnie nadal chciałem używać zmieniających się rogów, po prostu nie chciałem, więc zobacz ukośne linie. użyłem
Właśnie zdałem sobie sprawę, że komentuję niewłaściwe pytanie. Zgodnie z moim imiennikiem :(
źródło
Czy wypróbowałeś już rozwiązanie z dokumentów interfejsu użytkownika jQuery? https://api.jqueryui.com/dialog/#method-open
Jak to mówi, możesz to zrobić ...
W CSS:
W JS:
źródło
Możesz usunąć pasek z ikoną zamknięcia za pomocą technik opisanych powyżej, a następnie samodzielnie dodać ikonę zamknięcia.
CSS:
HTML:
// dołącz ten div do div zawierającego twoją treść
JS:
źródło
przejdź do jquery-ui.js (w moim przypadku jquery-ui-1.10.3.custom.js) i wyszukaj this._createTitlebar (); i skomentuj to.
teraz każde twoje okno dialogowe pojawi się z nagłówkami. Jeśli chcesz dostosować nagłówek, po prostu przejdź do _createTitlebar (); i edytuj kod w środku.
przez
źródło