2013-08-13 5 views
0

안녕하세요. 저는 여기 혼란스러워합니다. jQuery에서 replaceWith();을 사용하여 요소를 대체하려고하는데 잘 작동합니다. 그러나 변환 후 클릭 가능한 요소는 더 이상 작동하지 않습니다. 당신이 요소를 대체 할 때 이벤트 바인딩이 손실되기 때문에 여기 내 codejquery를 사용한 후에 메뉴 요소가 작동하지 않습니다

+0

질문에 jsFiddle 링크를 어떻게 숨겼는지 잘 모르겠지만 여기에 코드를 게시하십시오. – j08691

+0

@ j08691'replaceWith();'는 코드 형식으로되어 있습니다. 메타에 대한 [이 질문] (http://meta.stackexchange.com/questions/193086/require-multi-line-code-blocks-when-using-jsfiddle-links)이 열렸습니다. – Mooseman

+0

아, 죄송합니다. @ j08691. 나는 그게 더 낫다고 생각했습니다. – RicardoGonzales

답변

2

그게 있습니다. replaceWith()은 기본적으로 요소와 모든 이벤트 바인딩을 제거한 다음이를 새 요소로 바꿉니다. 이벤트 바인딩을 지속하지 않습니다.

대신 .on()을 사용하여 클릭 이벤트를 바인딩하십시오. 바이올린 업데이트

$('.menu').on('click', 'a', function() { 
    ... 
}); 

: http://jsfiddle.net/RTPhR/1/

0

http://jsfiddle.net/RTPhR/5/ 바인딩 링크에 메뉴에 이벤트 없습니다.

$(document).ready(function() { 
    $('.menu').on('click','a',function() { 
     var $this = $(this), 
      element = $this.attr('name'); 

     if (element == 'opt1') { 
      alert('opcion 1'); 

     } else if (element == 'opt2') { 
      alert('opcion 2'); 
      $this.replaceWith("<a href='#' name='cerrar'>VOLVER</a>"); 

     } else if (element == 'cerrar') { 
      alert('close!'); 
     } 
    }); 
}); 
관련 문제