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.