2011-01-17 7 views
0

나는이 코드 조각의 많은이 있습니다 (즉 모두 포함) 태그를 클릭하면이 jQuery 코드에은 jQuery를 .live 부모() 문제

<li> 
    <label> 
    <a title="Cadeo"> 
     <span class="container"> 
     <img class="shadow" src="../public/4cf54b32bd723_small.jpg" alt="" /> 
     </span> 
    </a> 
    <input name="Trailer" type="radio" value="1" /> 
    <span class="change">Seleziona</span> 
    </label> 
</li> 

감사에서 "Seleziona"텍스트가 대체됩니다 버튼 태그 :

$('label').click(function(){ 
    $('label').children('span.change').html('Seleziona'); // reset the others li's text 
    $(this).children('span.change').html('<button type="button" class="small middle"><img src="../images/vota-small.png" alt="" /></button>') 
}) 

이제 까다로운 부분 온다 : 나는 라디오 입력 태그의 값을 잡으려고 노력하고있어,하지만 버튼에 생성되기 때문에이 내가 .live 기능을 사용하고 (작동하지 않습니다 런타임)

$('button').live('click', function(){ 
    alert($(this).parent().siblings('input').val()); 
}) 

어디서 잘못 되었나요? -

$('button').live('click', function(e){ 
    e.stopPropagation(); 
    alert($(this).parent().prev('input').val()); 

}) 

을 사실을 클릭 http://jsfiddle.net/H4Gsq/

답변

0

먼저 ...없는 사용자 정의 트리거를 발생하고 그에 따라 그것을 조작하는 이유는

+0

감사합니다 :-("정의되지 않은"그건 ... 문제는 경고가 디버깅을 위해 것을, 그리고 좀 코드가 그게 발사되지 않습니다 ... 다른 방법을 시도 할 것 같아요 ... – Ivan

1

이보십시오 : 나는 대답

가 도움이 될 수 있다면, 여기에 라이브 버전입니다 사전에 ... "정의되지 않은" 감사를 받고 계속 버튼을 클릭하면 해당 레이블을 클릭하면 해당 레이블 기능이 트리거됩니다. 이 효과를 버블 링이라고합니다. 는

$("input[type='radio']").trigger("checked"); 

$("input[type='radio']").live('checked',function(){ 

alert($(this).parent().prev('input').val()); 

}) 
+0

아니이는 경고와 함께 완벽하게 작동, 여전히 – Ivan

0

e.stopPropagation()을 사용하고 이벤트 버블 링 단계로, 왜 parent()? 입력은 부모의 형제가 아닌 스팬의 형제입니다. 둘째, 버튼을 클릭하면 두 이벤트 핸들러가 모두 실행됩니다. stopPropagationlive 자체가 이벤트 버블 링에 의존하므로 도움이되지 않습니다. 또한 라이브 이벤트 핸들러는 일반 이벤트 핸들러 이후에 실행됩니다. event.target을 선택하고 단추 인 경우 레이블의 클릭 핸들러를 건너 뜁니다.

처음 부분을 잊어 버렸으므로 코드를주의 깊게 읽지 않았습니다. 어쨌든, 여기에 수정 된 버전입니다 : http://jsfiddle.net/H4Gsq/1/