jQuery-UI의 자동 완성이 제대로 표시되지 않음, Z- 색인 문제


83

현재 내 클라이언트 웹샵에서 jQuery UI의 자동 완성을 구현하고 있습니다. 문제는 자동 완성이있는 요소가 자동 완성의 Z- 색인보다 높은 Z- 색인을 갖는다는 것입니다. 자동 완성 Z- 색인을 수동으로 설정하려고 시도했지만 jQuery UI가 이것을 덮어 쓰는 느낌이 듭니다.

사실 내 질문이 자동 완성 제안 목록 의 중복 된 Z- 색인입니다. 어떻게 변경할 수 있나요? 하지만 답이 없었기 때문에 다시 시도 해볼까 생각했다.

어떤 도움이라도 환영합니다!

Martijn


3
이것이 도움이 될까요? stackoverflow.com/questions/3549860/…
Tim

2
더 코드 예제가 없기 때문에 당신이 전에 시도로 설정 나는이 세트 Z- 인덱스에게 추천 할 수!important
이고르 Dymov

동일한 문제가 있지만 버그는 Chrome에서만 발생합니다. 여기에 해결책이없는 것 같습니다. 아무도 나를 도울 수 있습니까?
Nivs

답변:


104

사용 z-index!important

.ui-autocomplete { position: absolute; cursor: default;z-index:30 !important;}  

이 질문을 게시 한 지 오래되었지만 javascript (및 따라서 jQuery)가 "! important"로 정의되어 있어도 CSS 속성을 덮어 쓸 수 있다는 것을 막연하게 기억합니다.
Martijn

1
내 사용자 정의 스타일 시트에서! important를 사용하는 +1도 나에게 완벽하게 작동했으며 open () 콜백을 사용하는 것보다 훨씬 더 나은 솔루션이었습니다.
Alex Fairchild

나는이 해결책이 훨씬 더 좋다는 데 동의하기 때문에이 대답을 내 자신에게 찬성하여 수락했습니다. 그래도 난 대답을 확인하지 않은 ..
마티

저는 jQuery를 처음 사용하며이 답변은 매우 좋습니다. 나를 위해 일했습니다. .ui-autocomplete가 어디에 있는지 찾는 데 문제가 있었지만 마침내 jquery-ui.css에서 발견했습니다. z-index와 비올라가 작동했습니다!
atsurti

좋은 대답입니다. 또한 나와 함께 일했습니다. 몇 가지 간단한 정보를 추가하기 위해. 첫째, 자동 완성 데이터는 ui-autocomplete라는 클래스 내에 포함되어 있으며 위와 같이 CSS에서 스타일을 지정할 수 있습니다. 둘째, Bootstrap과 함께 자동 완성을 사용하는 경우 항상 맨 위에있는 메뉴의 Z- 색인은 1030이므로 1031을 만들어야합니다. 훌륭한 해결 방법입니다. 고마워.
Randy Greencorn 2014 년

60

검색하는 동안이 주제 (http://forum.jquery.com/topic/alternating-style-on-autocomplete)를 찾았습니다. 자동 완성 상자의 스타일을 변경하는 유일한 방법은 자바 스크립트를 통해 수행하는 것입니다.

    open: function(){
        $(this).autocomplete('widget').css('z-index', 100);
        return false;
    },

2
왜 거짓을 반환합니까?
Noyo 2013

이벤트 핸들러의 일반적인 패러다임은 false를 반환하면 이벤트가 버블 링되는 것을 방지한다는 것입니다. 4 년이 지난 지금이 ​​상황에서 실제로 필요한 것인지는 알 수 없습니다.
Martijn

2
몇 년이 지났더라도 응답 해 주셔서 감사합니다! 실제로, 이것은 귀하의 경우에 필요하지 않으며 다른 사람에게 원치 않는 동작을 유발할 수도 있습니다. 어떤 경우에도이 문제는 이제 표준 솔루션 ( ui-front클래스 + appendTo위젯 옵션)을 가지고 있습니다. api.jqueryui.com/theming/stacking-elements
Noyo

10

상위 Div의 Z- 색인을 변경하면 자동 완성 메뉴에 div의 Z- 색인 +1이 표시됩니다.


1
자동 완성은 본문의 내용 끝에 추가되므로 본문은 z-index + 1
Marius

8
@Marius, appendTo옵션을 사용하여 메뉴 마크 업에 어디로 가야할지 알릴 수 있습니다. 그렇지 않으면 ui-front입력의 상위 요소 중 하나에 클래스 를 추가 할 수 있습니다 .
Noyo 2013

1
한 가지 더 : 상위 div는 상대 위치 ( 'position : relative')를 사용해야합니다. 그렇지 않으면 jQuery가 Z- 인덱스를 확인할 수 없습니다 ( bugs.jqueryui.com/ticket/5489 참조 )
Felix Schwarz

9

의 CSS에서 jQuery UI:

.ui-front { z-index: 9999; }

1
StackOverFlow.com에 오신 것을 환영합니다. 이것은 주석이거나보다 정교한 답변이어야합니다.
Diego C Nascimento 2014 년

그것은 잘못된 것입니다. jquery ui가 새로운 것을 팝업해야 할 때 이전 Z- 색인을 가져 와서 1 씩 늘리면 9999를 사용하면 한 번만 작동하고 다음 ui 요소는 10.000의 Z- 색인을 갖게되어 다시 문제가 발생합니다.
안드레아 마우로

8

이것을 시도하면 런타임 또는 초기화시 Z- 색인을 조작 할 수 있습니다.

$('#autocomplete').autocomplete({
    open: function(){
        setTimeout(function () {
            $('.ui-autocomplete').css('z-index', 99999999999999);
        }, 0);
    }
});

2

자동 완성 텍스트 입력에 더 높은 Z- 색인을 적용 할 수 있다면 이것이 문제의 해결책입니다.

jQuery UI Autocomplete 옵션 목록은 첨부되는 텍스트 입력의 Z- 색인을 가져 와서 해당 값에 1을 더하여 Z- 색인 값을 계산합니다.

따라서 텍스트 입력에 999의 Z- 색인을 제공 할 수 있습니다. 자동 완성의 Z- 색인 값은 1000입니다.

http://bugs.jqueryui.com/ticket/5489 에서 가져옴

<input type="text" class="autocomplete" style="z-index:999;" name="foo">


0

또한 항목을 추가하는 위치를 확인하십시오. 내부 div에 자동 완성을 추가했을 때이 문제가 발생했지만 본문 태그에 자동 완성을 추가하면 문제가 사라졌습니다.



-1

어쨌든 firebug가 아닌 CSS에서 (스크립트를로드하기 전에) 시도해보십시오.

.ui-selectmenu-menu {
    z-index:100;
}

제 경우에는 이것이 작동하고 다음과 같은 Z- 색인을 생성합니다 : 100x (예 : 1002)


1
어떤 이유로 CSS를 통한 Z- 색인 설정이 작동하지 않습니다. jQuery는 단순히 자체 Z- 색인 값을 할당합니다. (아래 답변을 참조)하지만 해결책을 찾았나요
마티

-1

다음을 추가

.ui-autocomplete
{
    z-index:100 !important;
}

jquery-custom-ui.css 파일 (또는 사용중인 경우 축소 된 파일).


-1

여전히이 플러그인을 사용하는 개발자를위한 것입니다. 이 시도:

.acResults
{
    z-index:1;
}

저에게는 z-index : 1로 충분했습니다. 귀하의 경우에 필요한 값을 설정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.