2010-11-26 5 views
3

나는 'button.button, button.ui-button, input.button 및 input.ui-button'에 둥근 모서리 수정을 적용하여 호출 할 수있는 함수가 있습니다.이 함수는 옆에 div를 추가하기 만합니다. 그 다음 요소 전체를 다른 div에 래핑합니다.jquery 선택기의 문제점

페이지로드시 제대로 작동하지만 페이지로드시 사용할 수없는 수정 단추를 호출 할 수있는 함수를 만들어야했습니다.

$(document).ready(function(){ 
    // Adds necessary div elements to buttons on page load. 
    $('input.button:visible, button.button:visible, input.ui-button:visible, button.ui-button:visible').after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />'); 
    $('input.button-large:visible, button.button-large:visible').after('<div class="button-large-right"></div>').wrap('<div class="button-large-wrapper" />'); 
}); 
function CheckIEButtons(){ 
    // Function to add necessary div elements to buttons - useful for buttons not accessible on page load 
    $("input.button:visible:not(div.button-wrapper),button.button:visible:not(div.button-wrapper)").after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />'); 
    $("input.ui-button:visible:not(div.button-wrapper),button.ui-button:visible:not(div.button-wrapper)").after('<div class="button-right"></div>').wrap('<div class="button-wrapper" />'); 
    $("input.button-large:visible:not(div.button-large-wrapper),button-large.button:visible:not(div.button-large-wrapper)").after('<div class="button-large-right"></div>').wrap('<div class="button-large-wrapper" />'); 
} 

그래서 기본적으로 볼 수있는 적절한 클래스의 모든 버튼/입력을 선택하고 싶지만 이미 래퍼 div에 없습니다.

언제든지 함수를 호출 할 때마다 해당 함수가 이미 존재하는지 여부에 관계없이 div를 추가합니다.

답변

1

.button-wrapper이 부모이므로 선택중인 요소에 .button-wrapper 부모가 없도록 지정해야합니다.

// parent isn't button-wrapper-----------v --------------------------------------------------------v 
$("input.button:visible:not(div.button-wrapper > input.button),button.button:visible:not(div.button-wrapper > button.button)") 

다른 개념과 동일한 개념입니다. 선택기의 너무 오래 얻는 경우

, 당신은 .not() 방법에 not 테스트를 둘 수 있었다 :

$("input.button:visible,button.button:visible").not(function() { 
    return $(this.parentNode).hasClass("button-wrapper"); 
})... 
+0

감사를 도와. 처음에는 일을 할 수 없었지만, 두 번째 것은 확실하게 있었고 너무 깔끔했습니다. 감사! –

+0

@Jonathan : 천만에요. – user113716

관련 문제