@MikeCole Dokumentasi ini untuk 1.10 - Saya pikir jika Anda ingin menyembunyikan tombol tutup di versi yang lebih rendah, Anda harus melakukan sesuatu seperti jawaban di bawah ini.
Jarrett
1
Gunakan "ui-dialog-titlebar-close": "display: none;" ketika kita mengatur dialog modal
jqueryui
Jawaban:
711
Saya telah menemukan ini bekerja pada akhirnya (perhatikan baris ketiga mengesampingkan fungsi terbuka yang menemukan tombol dan menyembunyikannya):
$(".ui-dialog-titlebar-close", ui).hide();untuk menyembunyikan tombol untuk dialog ini saja.
Anthony Serdyukov
67
Saya tidak bisa membuatnya bekerja dari parameter ui. Saya akhirnya menggunakan: $ (". Ui-dialog-titlebar-close", $ (this) .parent ()). Hide ();
Nigel
70
@Anton Hanya ingin menunjukkan bahwa hanya menetapkan 'ui' tidak berfungsi. Anda harus menggunakan 'ui.dialog'. jadi baris yang benar adalah $ (". ui-dialog-titlebar-close", ui.dialog) .hide ();
Bradley Mountford
22
@ Bradley. ui tidak bekerja untuk saya, ui.dialog tetapi diterapkan pada setiap contoh. Agar hanya dapat diterapkan pada fungsi yang berfungsi terbuka, saya harus melakukan ini: $ (". Ui-dialog-titlebar-close", this.parentNode) .hide ();
Saya suka pendekatan ini karena saya bisa menggunakannya di samping hal-hal seperti: .noTitleDlg .ui-dialog-titlebar {display: none} di CSS untuk membangun cara saya ingin dialog saya muncul dan berperilaku dan kemudian hanya mengatur dialogClass yang sesuai.
A. Murray
11
solusi sangat bersih ... +1 karena tidak melibatkan fungsionalitas js tambahan untuk menghapus tombol.
Bong
2
Ide yang hebat. Sangat berguna untuk menargetkan dialog tertentu dalam situasi di mana Anda menggunakan metode terbuka yang sama untuk semua dialog, dan sangat tidak praktis untuk mengubahnya untuk contoh tertentu.
ZolaKt
3
Solusi favorit saya Saya berpikir sesuatu seperti ini akan menjadi pendekatan terbaik. Terima kasih sudah memilikinya kode di sini. Membangun di atas ini, saya suka menggunakan variasi ini yang akan mengambil atribut kelas dari div konten dialog, di mana saya dapat menempatkan kelas "tidak-tutup":dialogClass : $("#my-dialog-id").attr("class"),
LS
Solusi ini memungkinkan penutupan dengan melarikan diri, jika Anda ingin mencegah penutupan pada penggunaan melarikan diri:$( ".selector" ).dialog({ dialogClass: 'no-close' , closeOnEscape: false,});
Mladen Adamovic
124
jawaban "terbaik" tidak akan bagus untuk banyak dialog. ini solusi yang lebih baik.
open:function(event, ui){//hide close button.
$(this).parent().children().children('.ui-dialog-titlebar-close').hide();},
Ini lebih rumit dari yang Anda butuhkan. $(".ui-dialog-titlebar-close", $(this).parent()).hide();
Kevin Panko
@KevinPanko saran Anda berfungsi dengan baik ketika menggunakan contoh yang disediakan oleh situs demo jquery ui dengan ASP.NET v2.0 di halaman .aspx. jqueryui.com/demos/dialog/modal-form.html
Matthew Dally
6
.closest ('. ui-dialog') lebih baik daripada mengasumsikan orang tua.
technomage
86
Anda dapat menggunakan CSS untuk menyembunyikan tombol tutup alih-alih JavaScript:
.ui-dialog-titlebar-close{
display: none;}
Jika Anda tidak ingin memengaruhi semua modals, Anda bisa menggunakan aturan like
Masalahnya adalah kadang-kadang menyembunyikan tombol tutup untuk dialog lainnya juga. bagaimana mencegahnya.
Zaveed Abbasi
Bahkan Menggunakan fungsi open: (event, ui) {$ (this) .closest ('. Ui-dialog'). Find ('. Ui-dialog-titlebar-close'). Show (); } tidak bekerja.
Zaveed Abbasi
34
Setelah Anda memanggil .dialog()suatu elemen, Anda dapat menemukan tombol tutup (dan markup dialog lainnya) pada waktu yang tepat tanpa menggunakan penangan acara:
$("#div2").dialog({// call .dialog method to create the dialog markup
autoOpen:false});
$("#div2").dialog("widget")// get the dialog widget element.find(".ui-dialog-titlebar-close")// find the close button for this dialog.hide();// hide it
Metode alternatif:
Di dalam penangan acara dialog, thismerujuk pada elemen yang sedang "didialog" dan $(this).parent()merujuk ke wadah markup dialog, jadi:
$("#div3").dialog({
open:function(){// open event handler
$(this)// the element being dialogged.parent()// get the dialog widget element.find(".ui-dialog-titlebar-close")// find the close button for this dialog.hide();// hide it}});
FYI, markup dialog terlihat seperti ini:
<divclass="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable"><!-- ^--- this is the dialog widget --><divclass="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix"><spanclass="ui-dialog-title"id="ui-dialog-title-dialog">Dialog title</span><aclass="ui-dialog-titlebar-close ui-corner-all"href="#"><spanclass="ui-icon ui-icon-closethick">close</span></a></div><divid="div2"style="height:200px;min-height:200px;width: auto;"class="ui-dialog-content ui-widget-content"><!-- ^--- this is the element upon which .dialog() was called --></div></div>
Tidak satu pun di atas berfungsi. Solusi yang benar-benar berfungsi adalah:
$(function(){//this is your dialog:
$('#mydiv').dialog({// Step 1. Add an extra class to our dialog to address the dialog directly. Make sure that this class is not used anywhere else:
dialogClass:'my-extra-class'})// Step 2. Hide the close 'X' button on the dialog that you marked with your extra class
$('.my-extra-class').find('.ui-dialog-titlebar-close').css('display','none');// Step 3. Enjoy your dialog without the 'X' link})
$('#yourdiv').// Get your box ...
dialog().// ... and turn it into dialog (autoOpen: false also works)
prev('.ui-dialog-titlebar').// Get title bar,...
find('a').// ... then get the X close button ...
hide();// ... and hide it
Tombol tutup yang ditambahkan oleh widget Dialog memiliki kelas 'ui-dialog-titlebar-close', jadi setelah panggilan awal Anda ke .dialog (), Anda dapat menggunakan pernyataan seperti ini untuk menghapus tombol tutup lagi: Berhasil ..
Anda harus dapat menggunakan CSS langsung di sini daripada JS jika Anda hanya menyembunyikan ikon. Semua .hide()tidak diatur display:nonedalam CSS, jadi $(".ui-button-icon-only").hide();secara fungsional setara dengan .ui-button-icon-only { display: none; }.
Karena saya menemukan saya melakukan ini di beberapa tempat di aplikasi saya, saya membungkusnya dalam sebuah plugin:
(function($){
$.fn.dialogNoClose =function(){returnthis.each(function(){// hide the close button and prevent ESC key from closing
$(this).closest(".ui-dialog").find(".ui-dialog-titlebar-close").hide();
$(this).dialog("option","closeOnEscape",false);});};})(jQuery)
Contoh Penggunaan:
$("#dialog").dialog({/* lots of options */}).dialogNoClose();
Anda dapat menghapus tombol tutup dengan kode di bawah ini. Ada juga opsi lain yang mungkin berguna untuk Anda lawan.
$('#dialog-modal').dialog({//To hide the Close 'X' button"closeX":false,//To disable closing the pop up on escape"closeOnEscape":false,//To allow background scrolling"allowScrolling":true})//To remove the whole title bar.siblings('.ui-dialog-titlebar').remove();
Jawaban:
Saya telah menemukan ini bekerja pada akhirnya (perhatikan baris ketiga mengesampingkan fungsi terbuka yang menemukan tombol dan menyembunyikannya):
Untuk menyembunyikan tombol tutup pada semua dialog, Anda juga dapat menggunakan CSS berikut:
sumber
$(".ui-dialog-titlebar-close", ui).hide();
untuk menyembunyikan tombol untuk dialog ini saja.open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
Berikut adalah pilihan lain hanya menggunakan CSS yang tidak melewati setiap dialog pada halaman.
CSS
HTML
Javascript.
Contoh Kerja
sumber
dialogClass : $("#my-dialog-id").attr("class"),
$( ".selector" ).dialog({ dialogClass: 'no-close' , closeOnEscape: false,});
jawaban "terbaik" tidak akan bagus untuk banyak dialog. ini solusi yang lebih baik.
sumber
$(".ui-dialog-titlebar-close", $(this).parent()).hide();
Anda dapat menggunakan CSS untuk menyembunyikan tombol tutup alih-alih JavaScript:
Jika Anda tidak ingin memengaruhi semua modals, Anda bisa menggunakan aturan like
Dan berlaku
.hide-close-btn
untuk simpul teratas dialogsumber
Seperti yang ditunjukkan pada halaman resmi dan disarankan oleh David:
Buat gaya:
Kemudian, Anda bisa menambahkan kelas no-close ke sembarang dialog untuk menyembunyikan tombol tutupnya:
sumber
Saya pikir ini lebih baik.
sumber
Setelah Anda memanggil
.dialog()
suatu elemen, Anda dapat menemukan tombol tutup (dan markup dialog lainnya) pada waktu yang tepat tanpa menggunakan penangan acara:Metode alternatif:
Di dalam penangan acara dialog,
this
merujuk pada elemen yang sedang "didialog" dan$(this).parent()
merujuk ke wadah markup dialog, jadi:FYI, markup dialog terlihat seperti ini:
Demo di sini
sumber
Jawaban Robert MacLean tidak berhasil untuk saya.
Namun ini berhasil bagi saya:
sumber
sumber
Tidak satu pun di atas berfungsi. Solusi yang benar-benar berfungsi adalah:
Silakan periksa apakah itu bekerja untuk Anda.
sumber
Cara terbaik untuk menyembunyikan tombol adalah dengan memfilternya dengan atribut data-ikonnya:
sumber
http://jsfiddle.net/marcosfromero/aWyNn/
sumber
Untuk menonaktifkan kelas, kode pendek:
dapat digunakan.
sumber
Tombol tutup yang ditambahkan oleh widget Dialog memiliki kelas 'ui-dialog-titlebar-close', jadi setelah panggilan awal Anda ke .dialog (), Anda dapat menggunakan pernyataan seperti ini untuk menghapus tombol tutup lagi: Berhasil ..
sumber
Saya menangkap acara dekat kotak dialog. Kode ini kemudian menghapus
<div>
(#dhx_combo_list
):sumber
sumber
.hide()
tidak diaturdisplay:none
dalam CSS, jadi$(".ui-button-icon-only").hide();
secara fungsional setara dengan.ui-button-icon-only { display: none; }
.Anda juga dapat menghapus baris tajuk Anda:
<div data-role="header">...</div>
yang menghapus tombol tutup.
sumber
sumber
Cara mudah untuk mencapai: (Lakukan ini di Anda
Javascript
)sumber
Karena saya menemukan saya melakukan ini di beberapa tempat di aplikasi saya, saya membungkusnya dalam sebuah plugin:
Contoh Penggunaan:
sumber
Saya adalah penggemar one-liners (tempat mereka bekerja!). Inilah yang bekerja untuk saya:
sumber
Bagaimana kalau menggunakan garis CSS murni ini? Saya menemukan ini solusi terbersih untuk dialog dengan ID yang diberikan:
sumber
Anda dapat menghapus tombol tutup dengan kode di bawah ini. Ada juga opsi lain yang mungkin berguna untuk Anda lawan.
sumber