2011-02-13 5 views
0

jQuery의 선택기에 문제가 있습니다.jQuery -> selectors 조합 문제 - div -> class -> a

I의 구조는 다음과 같습니다 http://img46.imageshack.us/img46/3639/structureb.png jQuery를에

<div id="myDatepicker" class="hasDatepicker" style="display: inline-block;"> 
    <div class="ui-datepicker-inline ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"> 
     <table class="ui-datepicker-calendar"> 
      <tbody> 
       <tr> 
        <td class="ui-body-c" onclick="DP_jQuery_1297589131703.datepicker._selectDay('#myDatepicker',1,2011, this);return false;"> 
         <a class="ui-state-default ui-btn ui-btn-up-c" href="#" data-theme="c">1</a> 
        </td> 
        ... 

나는이 작업을 수행 :

$(".ui-datepicker-calendar a").live("click", function() { 
    $("#myDatepicker").hide(); 
}); 

나는 하루에 클릭하면 그것은 내 날짜 선택기가 숨겨 질 것으로 예상처럼이 작동 달. 하지만 문제는 한 페이지에 두 개의 datepicker가 있습니다. 따라서이 jQuery 코드를 사용하면 두 날짜 표시기 모두 .ui-datepicker-calendar a과 일치하기 때문에이 함수를 "호출"합니다. 따라서 "더 나은"선택기가 필요합니다. 나는 어떤 경고 메시지를 얻을,

$("#myDatepicker1 .ui-datepicker-calendar a").live("click", function() { 
    alert("datepicker1"); 
}); 

하지만이 작동하지 않습니다

내 datepickers은 (myDatepicker 위 대신 HTML 코드) myDatepicker1myDatepicker2 이름을 가지고 있고이 시도. 그렇다면 사용자가 .ui-datepicker-calendar 클래스 (이 작동) 아래에있는 링크 a을 클릭하고 #myDatepicker (내 jQuery 코드에서는 작동하지 않음)이라는 ID 아래에 있는지 확인할 수 있습니까?

아는 사람 있습니까?

고맙습니다. & 최고 감사합니다.

+0

게시 한 마크 업과 연결된 구조는 피커의 'id'가 'myDatepicker1'이 아닌 'myDatepicker'가되도록 표시합니다. 그건 오타예요? '$ ("# myDatepicker .ui-datepicker-calendar a")'는 예상대로 작동해야합니다. –

+0

"내 datepickers는 myDatepicker1과 myDatepicker2를 (myDatepicker 위의 HTML 코드 대신) 이름이 있습니다 ..." – Tim

답변

1

당신은 가장 가까운 일치하는 데이터 선택기 요소를 찾기 위해 closest를 사용할 수 있습니다 hasDatepicker 클래스가 날짜 프리커 요소의 각각에 존재하는 사용

$(".ui-datepicker-calendar a").live("click", function() { 
    $(this).closest(".hasDatepicker").hide(); 
}); 

공지있다.

+0

흠, 작동하지 않으며 datepicker가 닫히지 않습니다. 함수가 호출되었고, 경고 메시지로 검사했습니다. 이 $ (". hasDatepicker"). hide();'는 작동하지만 두 날짜 피커를 모두 닫습니다 ... – Tim

+0

'$ (".ui-datepicker-calendar a")로 가장 가까운 ('. hasDatepicker'). hide); 두 날짜 피켓은 숨겨집니다. – Tim

+0

또한'.parent(). parent() ... .hide()'로 시도해도 작동하지 않습니다. 아마도'$ (this)'는'onClick' 때문에 클릭 된 항목이 아닌 것입니까? – Tim

관련 문제