jquery UI 대화 상자 : 제목 표시 줄없이 초기화하는 방법은 무엇입니까?


254

제목 표시 줄없이 jQuery UI 대화 상자를 열 수 있습니까?

답변:


289

가장 좋은 해결책은 옵션을 사용하는 것입니다. dialogClass 입니다.

jquery UI 문서에서 추출한 내용 :

초기화 중 : $('.selector').dialog({ dialogClass: 'noTitleStuff' });

또는 init 후 원하는 경우. :

$('.selector').dialog('option', 'dialogClass', 'noTitleStuff');

그래서 나는 dialogClass = 'noTitleStuff'옵션과 CSS를 사용하여 대화 상자를 만들었습니다.

.noTitleStuff .ui-dialog-titlebar {display:none}

너무 간단합니다! 하지만 왜 이전 id-> class 드릴링 방법이 작동하지 않는지 생각하기 위해 하루가 걸렸습니다. 실제로 .dialog()메소드 div 를 호출 하면 변환 한 다른 div (실제 대화 상자 div)의 자식이 될 수 있으며 div의 '형제'가 될 수 titlebar있으므로 전자에서 시작하여 후자를 찾는 것은 매우 어렵습니다.


2
+1 Jonatan의 솔루션은 특정 대화 상자에서 작동하지 않습니다. 당신의 않습니다.
— cetnar

1
나는 미 사르에 동의한다. 이것이 정의한 클래스 만있는 대화 상자에만 적용 할 수 있기 때문에 가장 좋은 솔루션입니다.
— Carlos Pinto

2
이 방법의 유일한 단점은 모달로 구성 될 때 Chrome이 그러한 대화 상자에 대한 수직 스크롤 막대를 추가한다는 것입니다. 어떻게 jQuery가 UI 위젯을 오버레이 높이를 잘못 계산하기 시작하기 때문입니다 ... 해키 {overflow : hidden}
— dimsuz

1
dialogClass는 jquery v 1.12에서 더 이상 사용되지 않으며 의도 한대로 대화 상자 객체에 영향을 미치지 않습니다.
— 미니 냉장고

1
dialogClass 옵션은 ui-dialog 속성을 사용하여 classes 옵션을 위해 더 이상 사용되지 않습니다.
— Sandeep Saroha

96

제목 표시 줄을 동적으로 제거하기위한 수정 프로그램을 찾았습니다.

$("#example").dialog(dialogOpts);
// remove the title bar
$(".ui-dialog-titlebar").hide();

대화 상자가 렌더링 된 후 'ui-dialog-titlebar'클래스가있는 모든 요소가 제거됩니다.


3
... 및 css 옵션은 이전에 나타날 가능성을 제거합니다. 나는 당신의 대안에 어떤 이점이 있는지 확신하지 못합니다. 실제로, 당신의 대안은 내가 한 일을 할 것입니다. CSS 경로가 더 빠릅니다.
— Sampson

10
내 옵션은이 대화 상자의 제목 표시 줄 만 제거합니다. 옵션을 사용한 경우 모든 대화 상자의 제목 표시 줄을 제거합니다. 앞으로 제목 표시 줄이 필요하다는 것을 알 수 있습니다.
— Loony2nz 2016 년

2
따라서 css-rule 내에 요소를 포함하십시오 #example .ui-dialog-titlebar.... 어느 쪽이든 작동합니다. 그러나 자바 스크립트는 결국 CSS를 설정할 것이므로 CSS에서 시작하지 않는 이점을 보지 못합니다. 정말 큰 차이는 없습니다. 가장 편한
— 것이라면

2
나에게만 해당 되나요 아니면 #example에 대화 제목에 대한 범위가 없습니까?
— Rio

2
@Rice Flour Cookies : .dialog ()가 대화 상자의 마크 업을 페이지에 삽입하기 때문에 .hide ()는 .dialog () 뒤에 와야합니다. 호출하기 전에 페이지에는 아직 대화 상자 요소가 없습니다.
— Jeremy Wiebe

62

CSS로 숨길 수 있다고 생각합니다.

.ui-dialog-titlebar {
    display: none;
}

또는 다음 dialogClass옵션을 사용하여이를 특정 대화 상자에 적용 할 수 있습니다 .

$( "#createUserDialog" ).dialog({
    dialogClass: "no-titlebar"
});
.no-titlebar .ui-dialog-titlebar {
    display: none;
}

대화 상자 " 테마 "를 확인하십시오 . 위의 제안 차종은의 사용 dialogClass에있을 표시 옵션, 밖으로의 방법으로 새로운 방법에 찬성한다.


네, 그것이 효과가있을 것 같지만, 그것은 세계적인 선택입니다. 옵션으로 할 수있는 방법이 있는지 궁금합니다. 제목 div가 표시되기 전에 jquery'ness를 미리 렌더링하여 미리 렌더링 할 수 있다고 생각합니다.
— Loony2nz

2
아니요. 제거 할 수있는 옵션이 없다고 생각합니다. 기본적으로 닫기 버튼이므로 거의 디자인이 좋지 않습니다.
— Sampson

3
사람들이 CSS에 대해 너무 많이 이야기 할 때, 그들은 재미 있고, 그렇지 않습니다.
— bobobobo

또한 더 이상 대화 상자를 이동할 수 없으므로 제거하지 않아야합니다. 텍스트를 넣지 않고 스타일을 변경하여 어둡고 얇을 수 있습니다.
— bobobobo

대화 상자의 닫기 메소드를 트리거하는 다른 이벤트가있는 경우 제목 표시 줄에 닫기 단추가 필요하지 않은 경우가 있습니다.
— 카를로스 핀토

55

나는 이것을 내 프로젝트에서 사용한다

$("#myDialog").dialog(dialogOpts);
// remove the title bar
$("#myDialog").siblings('div.ui-dialog-titlebar').remove();
// one liner
$("#myDialog").dialog(dialogOpts).siblings('.ui-dialog-titlebar').remove();

7
더 나은 방법 : 제목 표시 줄은 제거하지만 닫기 단추는 제거하지 마십시오. 기능을 유지하십시오. $(document).ready(function() { $('#video').click(function(){ $( "#dialog" ).dialog().siblings('.ui-dialog-titlebar').removeClass('ui-widget-header'); }); });
— Adrian P.

$("#myDialog").dialog('open').siblings('.ui-dialog-titlebar').remove();내 의견
— 으로는

또는 이전 형제 (제목 표시 줄 .ui-dialog-titlebar : $("#myDialog").prev().hide()또는)를 찾을 수도 $("#myDialog").prev(".ui-dialog-titlebar").hide()있습니다.
— Andrew

두 개의 div가 있고 하나만 숨기고 싶어서 투표하십시오.
— Marcus Becker

15

이것은 나를 위해 일했다 :

$("#dialog").dialog({
    create: function (event, ui) {
        $(".ui-widget-header").hide();
    },

1
모든 대화 상자 에서 헤더가 숨겨 집니다. 아래의 제안 (다음 답장)은 현재 열려있는 대화 상자에 대해서만 수행합니다.
— ingredient_15939

니스 ... 이것은 기본 CSS 클래스로 인해 모든 대화 상자를 숨길 필요가 없다는 것을 의미합니다 ... 또한 대화 상자를 별도로 설정 한 다음 제목을 제거하지 않아도됩니다.
— Gwasshoppa

8

사용해보십시오

$("#mydialog").closest(".ui-dialog-titlebar").hide();

모든 대화 제목이 숨겨집니다

$(".ui-dialog-titlebar").hide();

7

실제로 대화 상자를 사용하여 다른 방법이 있습니다. widget 직접 있습니다.

대화 상자 위젯을 얻을 수 있습니다

$("#example").dialog(dialogOpts);
$dlgWidget = $('#example').dialog('widget');

그리고 나서

$dlgWidget.find(".ui-dialog-titlebar").hide();

숨길 titlebar해당 대화 상자 내에서만

그리고 한 줄의 코드로 (체인을 좋아합니다) :

$('#example').dialog('widget').find(".ui-dialog-titlebar").hide();

이 방법으로 대화 상자에 추가 클래스를 추가 할 필요가 없습니다. 바로 수업을 진행하십시오. 나를 위해 잘 작동합니다.


5

open 이벤트 를 사용 하고 제목 표시 줄을 숨기는 것이 더 효율적이고 읽기 쉽습니다 . 페이지 전역 클래스 이름 검색을 사용하는 것을 좋아하지 않습니다.

open: function() { $(this).closest(".ui-dialog").find(".ui-dialog-titlebar:first").hide(); }

단순한.


2
이것은 내가 갔지만 create : 함수를 사용하여 대화 상자가 표시 될 때뿐만 아니라 항상 숨겨지는 방법입니다. 또한 대화 상자에서 완전히 사라지도록 .hide () 대신 .remove ()로 변경했습니다.
— Chris Porter

4

대화 상자를 초기화 할 때 dialogClass를 사용한 후 jquery를 사용하여 제목 표시 줄을 숨길 수 있습니다.

초기화 중 :

$('.selector').dialog({
    dialogClass: 'yourclassname'
});

$('.yourclassname div.ui-dialog-titlebar').hide();

이 방법을 사용하면 CSS 파일을 변경할 필요가 없으며 동적입니다.


1
그렇습니다. 이것은 6 개월 전에 게시 된 mizar의 솔루션이었습니다.
— Kirk Woll

동의하지만 솔루션을 복잡하게 만드는 CSS 항목을 추가해야합니다. 내 제안은 jQuery 만 사용하여 문제를 처리합니다.
— Arun Vasudevan Nair

4

jQuery 위젯을 재정의하는 것이 좋습니다.

(function ($) {
    $.widget("sauti.dialog", $.ui.dialog, {
        options: {
            headerVisible: false
        },
        _create: function () {
            // ready to generate button
            this._super("_create"); // for 18 would be $.Widget.prototype._create.call(this);
            // decide if header is visible
            if(this.options.headerVisible == false)
                this.uiDialogTitlebar.hide();
        },
        _setOption: function (key, value) {
            this._super(key, value); // for 1.8 would be $.Widget.prototype._setOption.apply( this, arguments );
            if (key === "headerVisible") {
                if (key == false)
                    this.uiDialogTitlebar.hide();
                else
                    this.uiDialogTitlebar.show();
                return;
            }
        }
    });
})(jQuery);

제목 표시 줄을 표시하거나 표시하지 않으려면 이제 설정할 수 있습니다

   $('#mydialog').dialog({
      headerVisible: false // or true
});

4

대화 상자가 여러 개인 경우 다음을 사용할 수 있습니다.

$("#the_dialog").dialog({
        open: function(event, ui) { 
            //hide titlebar.
            $(this).parent().children('.ui-dialog-titlebar').hide();
        }
    });

3

이 작업을 수행하는 가장 쉬운 방법이며 특정 대화 상자에서 제목 표시 줄 만 제거합니다.

$('.dialog_selector').find('.ui-dialog-titlebar').hide();

2

대화 제목 표시 줄을 숨길 때 내가 발견 한 한 가지는 표시가없는 경우에도 화면 판독기가 여전히 그것을 읽고 읽을 것입니다. 이미 자신의 제목 표시 줄을 추가 한 경우 제목 표시 줄이 모두 표시되어 혼동 될 수 있습니다.

내가 한 것은를 사용하여 DOM에서 제거했습니다 $(selector).remove(). 이제 스크린 리더 (및 다른 모든 스크린 리더)는 더 이상 존재하지 않으므로이를 볼 수 없습니다.



2

이 다음 양식은 문제를 해결했습니다.

$('#btnShow').click(function() {
  $("#basicModal").dialog({
    modal: true,
    height: 300,
    width: 400,
    create: function() {
      $(".ui-dialog").find(".ui-dialog-titlebar").css({
        'background-image': 'none',
        'background-color': 'white',
        'border': 'none'
      });
    }
  });
});
#basicModal {
  display: none;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.css" />
<div id="basicModal">
  Here your HTML content
</div>
<button id="btnShow">Show me!</button>



1

이것은 대화 상자 제목 표시 줄을 숨기는 데 도움이되었습니다.

$(".ui-dialog-titlebar" ).css("display", "none" );

1

이것이 어떻게 할 수 있는가입니다.

테마 폴더로 이동-> 기본-> jquery.ui.dialog.css를 엽니 다.

찾기

팔로 잉

titleBar를 표시하지 않으려면 단순히 display : none을 다음과 같이 설정하십시오.

.ui dialog.ui-dialog .ui-dialog-titlebar 
{
    padding: .4em 1em;
    position: relative;
        display:none;
}

제목도 비슷합니다.

.ui-dialog .ui-dialog-title {
    float: left;
    margin: .1em 0;
    white-space: nowrap;
    width: 90%;
    overflow: hidden;
    text-overflow: ellipsis;
    display:none; 
}

이제 닫기 버튼이 있습니다. 없음을 설정하거나 설정할 수 있습니다.

.ui-dialog .ui-dialog-titlebar-close {
    position: absolute;
    right: .3em;
    top: 50%;
    width: 21px;
    margin: -10px 0 0 0;
    padding: 1px;
    height: 20px;

   display:none;

}

나는 많은 검색을했지만 아무것도 생각하지 않았다. 그러나 이것은 전체 응용 프로그램에 닫기 버튼, 대화 상자의 제목 표시 줄이 없지만 jquery를 사용하고 jquery를 통해 CSS를 추가하고 설정하여 극복 할 수 있습니다

여기에 대한 구문이 있습니다

$(".specificclass").css({display:normal})

1
이것은 효과가 있으며 이것이 가능하다는 것을 이해하는 데 도움이되지만, 여러 .dialogs()설정이 있거나 1 개 정도만 필요한 경우이 방법으로 전역 적으로 설정을 적용하는 것보다 대체 경로가 있습니다.
— Chef_Code

0

나에게 여전히 크기 조정 가능한 모서리를 사용하고 싶었지만 대각선을보고 싶지 않았습니다. 나는 사용했다

$(".ui-resizable-handle").css("opacity","0");

내가 틀린 질문에 대해 언급하고 있음을 깨달았습니다. 내 이름까지 살기 :(



-1

위에서 설명한 기술을 사용하여 닫기 아이콘이있는 막대를 제거한 다음 직접 닫기 아이콘을 추가 할 수 있습니다.

CSS :

.CloseButton {
background: url('../icons/close-button.png');   
width:15px;
height:15px;
border: 0px solid white;
top:0;
right:0;
position:absolute;
cursor: pointer;
z-index:999;
}

HTML :

var closeDiv = document.createElement("div");
closeDiv.className = "CloseButton";

//이 div를 콘텐츠를 보유한 div에 추가

JS :

 $(closeDiv).click(function () {
         $("yourDialogContent").dialog('close');
     });

-1

jquery-ui.js (내 경우에는 jquery-ui-1.10.3.custom.js)로 이동하여 this._createTitlebar ();를 검색하십시오. 의견을 말하십시오.

이제 대화 상자의 모든 사람이 머리글과 함께 나타납니다. 헤더를 사용자 정의하려면 _createTitlebar ()로 이동하십시오. 내부 코드를 편집하십시오.

으로


이와 같이 수정하면 끔찍한 업그레이드가 발생합니다.
— usr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.