2010-12-13 6 views
3

와 부모 DIV의 내용을 교체하려면 다음이 코드는 페이지에 5-6 번 (또는 그 이상)를 볼 수있는어떻게이 html 코드가 jQuery를

<div id="ht_key" class="ht_all"> 
    <div class="ht_bottom"> 
     <div class="ht_bottom_p"> 
      <span class="ht_bottom_o"> 
       <a href="javascript:;" onclick="htrc('key');\">click</a> 
      </span> 
     </div> 
    </div> 
</div> 

합니다. htrc 함수에서 #ht_key div를 다른 내용으로 바꾸고 싶습니다. ("키"는 각 경우마다 다릅니다). 문제는 페이지에서 동일한 "키"로 2 개의 div가있는 경우 htrc 기능이 수행 될 때 첫 번째 #ht_key div 만 대체된다는 것입니다. 그래서 내가 htrc 함수가 호출 된 #ht_key div의 내용을 대체해야하기 때문에 부모 div (id가있는 부모 div)를 바꿀 수있는 방법이 있습니까?

부모님과 가까운 사람 모두 시도했지만 결과가 없습니다. 어떤 제안이 있으십니까?

감사합니다.

답변

4

나의 제안은 id 대신 class이되도록하는 것이 좋습니다.

<div class="ht_key ht_all"> 

이렇게하면 HTML이 유효합니다.

또는 onclickthis을 통과하고,이 closest() 최대 ht_all에 어떻게 변경 :이 방법을 가지고가는 경우에

<a href="#" onclick="htrc(this);">click</a> 

JS

htrc(el) { 
    $(el).closest('.ht_all'); 
    // ... 
} 

이 (가) 나는를 사용하십시오 HTML5를 에 대한 ht_key의 속성 :

<div data-key="somekey" class="ht_all"> 

그리고 당신은 jQuery를의 최신 버전을 사용하는 경우, 당신은 할 수 있습니다 :

htrc(el) { 
    var $all = $(el).closest('.ht_all'); 
    var key = $all.data('key'); 
} 
+0

대단히 고마워요! –

+0

@Man_E : 오신 것을 환영합니다. – user113716

1

을 나는 경우에 당신은 당신의 코드에서 태그를 닫는 누락 (#ht_key 실제로 앵커에 대한 부모 가정). "onclick"을 제거하고 다음과 같이 이벤트 처리기를 바인딩합니다.

$("span.ht_bottom_o a").click(function(){$(this).closest(".ht_all").html(...)});