2012-04-23 2 views
0
function OnIframeContentLoads(){   
    $("#iframe") 
    .contents() 
    .find(".text") 
    .live({ 
     click: OpenSingleImageEditor, 
     mouseover: function() { HighLight(this) }, 
     mouseout: function() { OffLight(this);} 
    });  
} 

.bind()로 이벤트를 바인딩 할 때 작동하지만 위 코드에서 live()와 같이 작동하지 않습니다. 여기에서 문제가 발생합니까? .live 알려진 문제입니다javascript bind가 작동하지만 live가 아님

+3

작은 팁, .find()를 사용하려면 .contents()를 사용할 필요가 없습니다. – SimplGy

답변

5

, 지원되지 않는 문서 방법을 체인으로 연결

에서 대신

.on를 사용합니다. 예 : $ ("a"). find (".offsite, .external"). 라이브 (...); 유효하지 않으며 예상대로 작동하지 않습니다.

$("#iframe").on('click', '.text', function(){ ... });  
+0

아 맞습니다. 나는 사람들이 지금 '.on'을 표준화하고 있다고 생각한다. – SimplGy

+0

그래, 그렇다. 그것은 jQuery 1.7+ tho에서만 작동합니다. – mingos

+0

답변을 주셔서 감사합니다 답변을 위해 – gaurav

1

나는 .bind 적용되지 않습니다 꽤 특정 제약을 .live 있습니다 것으로 나타났습니다. 특히 어떤 종류의 캐시 된 선택기와도 작동하지 않습니다. 아마 .find() /. contents()에 적용되는 것 같습니다.

대신을 시도해보십시오

$("#iframe .text").live({ click: function(){ console.log('clicked') } }) 
+0

thanks 대답은하지만 작동하지 않습니다. – gaurav

0
당신은() 메소드에 jQuery를 사용하는 것이 좋습니다

:

$(element).on(events [, selector] [, data], handler(eventObject)) 

http://api.jquery.com/on/

CSTE 연구진() 메서드에 이벤트 핸들러를 첨부 jQuery 객체에서 현재 선택된 요소 세트. .on() 메서드는 jQuery 1.7부터 이벤트 처리기를 연결하는 데 필요한 모든 기능을 제공합니다. 이전 jQuery 이벤트 메소드에서 변환하는 데 도움이 필요하면 .bind(), .delegate() 및 .live()를 참조하십시오. .on()으로 바인드 된 이벤트를 제거하려면 .off()를 참조하십시오. 한 번만 실행되고 자체를 제거하는 이벤트를 첨부하려면 참조하십시오.

관련 문제