[javascript] jQuery UI 대화 상자-닫기 아이콘 없음

사용자 정의 jQuery 1.10.3 테마를 사용하고 있습니다. 테마 롤러에서 모든 것을 직접 다운로드했으며 의도적으로 아무것도 변경하지 않았습니다.

대화 상자를 만들고 닫기 아이콘이 있어야하는 빈 회색 사각형이 나타납니다.
누락 된 닫기 아이콘의 스크린 샷

내 페이지에서 생성 된 코드를 비교했습니다.

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
    <spanid="ui-id-2" class="ui-dialog-title">Title</span>
    <button class="ui-dialog-titlebar-close"></button>
</div>

온 생성 된 코드에 대한 대화 데모 페이지 :

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
    <span id="ui-id-1" class="ui-dialog-title">Basic dialog</span>
    <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" aria-disabled="false" title="close">
        <span class="ui-button-icon-primary ui-icon ui-icon-closethick"></span>
        <span class="ui-button-text">close</span>
    </button>
</div>

편집 : 코드의 다른 부분은 jQueryUI에 의해 생성 되므로 정상적인 기능을 달성하기 위해 좋지 않은 / 불필요한 선택 인 것처럼 보이는 jqueryui js 파일을 편집하지 않고 span 태그를 추가 할 수는 없습니다.

다음은 코드의 해당 부분을 생성하는 데 사용되는 자바 스크립트입니다.

this.element.dialog({
    appendTo: "#summary_container",
    title: this.title(),
    closeText: "Close",
    width: this.width,
    position: {
        my: "center top",
        at: ("center top+"+(window.innerHeight*.1)),
        collision: "none"
    },
    modal: false,
    resizable: false,
    draggable: false,
    show: "fold",
    hide: "fold",
    close: function(){
        if(KOVM.areaSummary.isVisible()){
            KOVM.areaSummary.isVisible(false);
        }
    }
});

나는 길을 잃었고 도움이 필요하다. 미리 감사드립니다.



답변

나는 이것에 대해 조금 늦었지만 준비가 되셨습니까?

이것이 발생하는 이유는 jquery-ui를 호출 한 후 부트 스트랩을 호출하기 때문입니다.

말 그대로 두 가지를 바꾸어 다음 대신하십시오.

<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="js/bootstrap.min.js"></script>

그것은된다

<script src="js/bootstrap.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

🙂

편집-26/06/2015-이것은 몇 달 후에도 계속 관심을 끌기 때문에 편집 할 가치가 있다고 생각했습니다. 나는 실제로이 답변 아래의 의견에 제공된 noConflict 솔루션을 정말 좋아하며 사용자 Pretty Pretty가 별도의 답변으로 설명합니다. 일부 스크립트에서 스크립트를 교체 할 때 부트 스트랩 툴팁에 문제가보고되었습니다. 부트 스트랩 때문에 필요하지 않은 툴팁없이 jquery UI를 다운로드했기 때문에이 문제가 발생하지 않았습니다. 그래서이 문제는 결코 나에게 나타나지 않았습니다.

편집 – 22/07/2015 – 혼동하지 마십시오 jquery-ui과 함께 jquery! Bootstrap의 JavaScript는 jQuery를로드해야하지만 jQuery-UI에 의존하지는 않습니다. 따라서 부트 스트랩 이전에 항상로드해야 하지만, jquery-ui.js이후 bootstrap.min.js에 로드 할 수 있습니다 jquery.js.


답변

이것은 최고 답변에 대한 의견이지만 문제에 대한 답변을 얻었으므로 자체 답변의 가치가 있다고 생각했습니다.

JQuery UI 이후에 Bootstrap을 선언 상태로 유지하려면 (Bootstrap 툴팁을 사용하고 싶었 기 때문에) 다음을 선언 $(document).ready하면 버튼이 다시 나타날 수 있습니다 ( https://stackoverflow.com/ a / 23428433 / 4660870 )

var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton            // give $().bootstrapBtn the Bootstrap functionality


답변

이것은 jQuery가 제공하는 방식에 버그로 보입니다. Dialog Open이벤트 에서 일부 dom 조작으로 수동으로 수정할 수 있습니다 .

$("#selector").dialog({
    open: function() {
        $(this).closest(".ui-dialog")
        .find(".ui-dialog-titlebar-close")
        .removeClass("ui-dialog-titlebar-close")
        .html("<span class='ui-button-icon-primary ui-icon ui-icon-closethick'></span>");
    }
});


답변

이것은 1.10에서 깨진 것으로보고

http://blog.jqueryui.com/2013/01/jquery-ui-1-10-0/

phillip은 2013 년 1 월 29 일 오전 7시 36 분에 다음과 같이 말했습니다. CDN 버전에서는 대화 상자 닫기 버튼이 없습니다. 버튼 태그 만 있고 span ui-icon은 missong입니다.

이전 버전을 다운로드했으며 닫기 버튼의 X가 다시 표시됩니다.


답변

세 가지 수정 사항을 찾았습니다.

  1. 부트 스트랩을 먼저로드 할 수 있습니다. 그리고 그들은 jquery-ui를로드합니다. 그러나 좋은 생각이 아닙니다. 콘솔에 오류가 표시되기 때문입니다.
  2. 이:

    var bootstrapButton = $.fn.button.noConflict();
    $.fn.bootstrapBtn = bootstrapButton;

    도움이됩니다. 그러나 다른 버튼은 끔찍해 보입니다. 그리고 지금 우리는 부트 스트랩 버튼이 없습니다.

  3. 부트 스트랩 스타일을 사용하고 아이콘이있는 닫기 버튼을 원합니다. 나는 다음을 수행했다.

    수정 후 닫기 버튼의 모양

    .ui-dialog-titlebar-close {
        padding:0 !important;
    }
    
    .ui-dialog-titlebar-close:after {
        content: '';
        width: 20px;
        height: 20px;
        display: inline-block;
        /* Change path to image*/
        background-image: url(themes/base/images/ui-icons_777777_256x240.png);
        background-position: -96px -128px;
        background-repeat: no-repeat;
    }

답변

나는 똑같은 문제가 있었을 것입니다. 아마도 이미 이것을 chececked했지만 jimage-ui.css와 동일한 위치에 “images”폴더를 배치하여 해결했습니다.


답변

나는 같은 문제에 갇히고 위의 모든 제안을 읽은 후에 CSS 에서이 이미지 ( 여기 에서 찾을 수 있음 )를 다운로드 한 후 내 앱의 이미지 폴더에 저장하려고했습니다. 문제 해결됨!

CSS는 다음과 같습니다.

.ui-state-default .ui-icon {
        background-image: url("../img/ui-icons_888888_256x240.png");
}