ฉันจะลบปุ่มปิด ( Xที่มุมขวาบน) ในกล่องโต้ตอบที่สร้างโดย jQuery UI ได้อย่างไร
ฉันจะลบปุ่มปิด ( Xที่มุมขวาบน) ในกล่องโต้ตอบที่สร้างโดย jQuery UI ได้อย่างไร
คำตอบ:
ฉันได้พบสิ่งนี้ใช้งานได้ในตอนท้าย (โปรดสังเกตบรรทัดที่สามที่แทนที่ฟังก์ชั่นเปิดซึ่งค้นหาปุ่มและซ่อนไว้):
$("#div2").dialog({
closeOnEscape: false,
open: function(event, ui) {
$(".ui-dialog-titlebar-close", ui.dialog || ui).hide();
}
});
เพื่อซ่อนปุ่มปิดในกล่องโต้ตอบทั้งหมดคุณสามารถใช้ CSS ต่อไปนี้ได้เช่นกัน:
.ui-dialog-titlebar-close {
visibility: hidden;
}
$(".ui-dialog-titlebar-close", ui).hide();
เพื่อซ่อนปุ่มสำหรับกล่องโต้ตอบนี้เท่านั้น
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
นี่คืออีกทางเลือกหนึ่งเพียงแค่ใช้ CSS ที่ไม่เกินการโต้ตอบทุกครั้งในหน้า
CSS
.no-close .ui-dialog-titlebar-close {display: none }
HTML
<div class="selector" title="No close button">
This is a test without a close button
</div>
จาวาสคริปต์
$( ".selector" ).dialog({ dialogClass: 'no-close' });
dialogClass : $("#my-dialog-id").attr("class"),
$( ".selector" ).dialog({ dialogClass: 'no-close' , closeOnEscape: false,});
คำตอบ "ดีที่สุด" จะไม่ดีสำหรับการสนทนาหลายครั้ง นี่คือทางออกที่ดีกว่า
open: function(event, ui) {
//hide close button.
$(this).parent().children().children('.ui-dialog-titlebar-close').hide();
},
$(".ui-dialog-titlebar-close", $(this).parent()).hide();
คุณสามารถใช้ CSS เพื่อซ่อนปุ่มปิดแทน JavaScript:
.ui-dialog-titlebar-close{
display: none;
}
หากคุณไม่ต้องการที่จะส่งผลกระทบต่อการปรับเปลี่ยนทั้งหมดคุณสามารถใช้กฎเช่น
.hide-close-btn .ui-dialog-titlebar-close{
display: none;
}
และนำ.hide-close-btn
ไปใช้กับโหนดบนสุดของการโต้ตอบ
ตามที่ปรากฏในหน้าอย่างเป็นทางการและแนะนำโดยเดวิด:
สร้างสไตล์:
.no-close .ui-dialog-titlebar-close {
display: none;
}
จากนั้นคุณสามารถเพิ่มคลาสที่ไม่มีการปิดการสนทนาใด ๆ เพื่อซ่อนปุ่มปิด:
$( "#dialog" ).dialog({
dialogClass: "no-close",
buttons: [{
text: "OK",
click: function() {
$( this ).dialog( "close" );
}
}]
});
ฉันคิดว่ามันดีกว่า
open: function(event, ui) {
$(this).closest('.ui-dialog').find('.ui-dialog-titlebar-close').hide();
}
เมื่อคุณเรียก.dialog()
ใช้งานองค์ประกอบแล้วคุณสามารถค้นหาปุ่มปิด (และมาร์กอัปกล่องโต้ตอบอื่น ๆ ) ได้ทุกเวลาที่สะดวกโดยไม่ต้องใช้ตัวจัดการเหตุการณ์:
$("#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
วิธีอื่น:
Inside ตัวจัดการเหตุการณ์ไดอะล็อกthis
หมายถึงองค์ประกอบที่เป็น "dialoged" และ$(this).parent()
อ้างถึงคอนเทนเนอร์มาร์กอัพไดอะล็อกดังนั้น:
$("#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, มาร์กอัปการโต้ตอบมีลักษณะเช่นนี้:
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
<!-- ^--- this is the dialog widget -->
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span class="ui-dialog-title" id="ui-dialog-title-dialog">Dialog title</span>
<a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
</div>
<div id="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>
คำตอบของ Robert MacLean ไม่ได้ผลสำหรับฉัน
อย่างไรก็ตามมันใช้งานได้สำหรับฉัน:
$("#div").dialog({
open: function() { $(".ui-dialog-titlebar-close").hide(); }
});
$("#div2").dialog({
closeOnEscape: false,
open: function(event, ui) { $('#div2').parent().find('a.ui-dialog-titlebar-close').hide();}
});
ไม่มีการทำงานข้างต้น วิธีแก้ปัญหาที่ใช้งานได้จริงคือ:
$(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
})
โปรดตรวจสอบว่ามันเหมาะกับคุณหรือไม่
วิธีที่ดีที่สุดในการซ่อนปุ่มคือการกรองด้วยแอททริบิวต์ data-icon:
$('#dialog-id [data-icon="delete"]').hide();
http://jsfiddle.net/marcosfromero/aWyNn/
$('#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
สำหรับการเลิกใช้คลาสรหัสย่อ:
$(".ui-dialog-titlebar-close").hide();
อาจจะใช้.
ปุ่มปิดที่เพิ่มโดยวิดเจ็ต Dialog มีคลาส 'ui-dialog-titlebar-close' ดังนั้นหลังจากการเรียกครั้งแรกของคุณไปยัง. diog () คุณสามารถใช้คำสั่งเช่นนี้เพื่อลบปุ่มปิดอีกครั้ง: มันทำงาน ..
$( 'a.ui-dialog-titlebar-close' ).remove();
ฉันจับเหตุการณ์ปิดของกล่องโต้ตอบ รหัสนี้จะลบ<div>
( #dhx_combo_list
):
open: function(event, ui) {
//hide close button.
$(this).parent().children().children('.ui-dialog-titlebar-close').click(function(){
$("#dhx_combo_list").remove();
});
},
$(".ui-button-icon-only").hide();
.hide()
จะเป็นชุดdisplay:none
ใน CSS ดังนั้นเป็นหน้าที่เทียบเท่า$(".ui-button-icon-only").hide();
.ui-button-icon-only { display: none; }
คุณยังสามารถลบบรรทัดส่วนหัวของคุณ:
<div data-role="header">...</div>
ซึ่งจะลบปุ่มปิด
document.querySelector('.ui-dialog-titlebar-close').style.display = 'none'
วิธีง่ายๆในการบรรลุ: (ทำสิ่งนี้ในของคุณJavascript
)
$("selector").dialog({
autoOpen: false,
open: function(event, ui) { // It'll hide Close button
$(".ui-dialog-titlebar-close", ui.dialog | ui).hide();
},
closeOnEscape: false, // Do not close dialog on press Esc button
show: {
effect: "clip",
duration: 500
},
hide: {
effect: "blind",
duration: 200
},
....
});
เนื่องจากฉันพบว่าฉันกำลังทำสิ่งนี้อยู่หลายแห่งในแอปของฉันฉันจึงใส่มันไว้ในปลั๊กอิน:
(function ($) {
$.fn.dialogNoClose = function () {
return this.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)
ตัวอย่างการใช้งาน:
$("#dialog").dialog({ /* lots of options */ }).dialogNoClose();
ฉันเป็นแฟนพันธุ์แท้คนหนึ่ง นี่คือสิ่งที่ได้ผลสำหรับฉัน:
$("#dialog").siblings(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close").hide();
วิธีการเกี่ยวกับการใช้สาย CSS บริสุทธิ์นี้ ฉันพบว่านี่เป็นคำตอบที่สะอาดที่สุดสำหรับการโต้ตอบด้วย Id ที่กำหนด:
.ui-dialog[aria-describedby="IdValueOfDialog"] .ui-dialog-titlebar-close { display: none; }
คุณสามารถลบปุ่มปิดด้วยรหัสด้านล่าง มีตัวเลือกอื่น ๆ เช่นกันซึ่งคุณอาจต่อสู้มีประโยชน์
$('#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();