2009-09-06 4 views
2

하는 태그로 IE에서 작동하지 않는 클릭 JQuery와 :라이브 동적으로 jQuery를 사용하여 추가되어 내 페이지에서 앵커 태그가

<a href="#" id="ClickMe">Click Me</a> 

나는 내 $(document).ready(function()

$("#ClickMe").live('click', function() 
{ 
    $("#SomeDiv1").show(); 
    $("#SomeDiv2").hide(); 
}); 

내에서 jQuery를 다음 한 파이어 폭스에서는 잘 작동하지만 IE에서는 그렇지 않다. 현재 IE8에서 개발 중이지만 최소 IE7에서 실행해야합니다.

답변

1

나는 정보 창에서 렌더링되는 앵커 태그에서 함수에 대한 호출을 embeeding하여 문제를 해결 한 :

은 다음보십시오.

> <a href="#" id="ClickMe" onclick="ClickMeFunc();">Click Me</a> 
+2

이것은 실제로 좋은 답변이 아닙니다. 문제를 해결하기 위해 해킹 한 것이므로. –

+5

건설적인 비평에 감사드립니다. 나는 당신이 제안하는대로 구현할 것입니다 ... 오, 당신이 아무 것도 제안하지 않았다는 것을 기다립니다 ... 코멘트 주셔서 감사합니다. – littlechris

+2

난 너와 똑같은 문제가있어. Google Maps 정보창의 앵커 태그는 IE의 jQuery 라이브 이벤트를 허용하지 않습니다. FF, Chrome 등에서 잘 작동합니다. 해결 방법은 훌륭합니다. 그리고 Nick은 문제를 해결하기 위해 * 때때로 그것을 해결합니다. HTML 밖에서 모든 JS 핸들러를 사용하면 좋지만, 사용중인 Google지도는 JS입니다. –

0

live 대신 click 이벤트를 직접 사용하지 않는 이유는 무엇입니까? ID가있는 요소에 바인딩되어 있으므로 나중에 동일한 요소로 다른 요소를 추가하지 않는다고 가정합니다. 그리고 그것은 live 기능을 사용하는 목적에 어긋납니다.


하면이처럼보십시오 :

$("#ClickMe").click(function() 
{ 
    $("#SomeDiv1").show(); 
    $("#SomeDiv2").hide(); 
}); 
+1

나는 anchoir 태그가 페이지에 동적으로 추가되었다고 말했어야만합니다. – littlechris

3

아마 단지 당신이 기대하는 일을하지 않고, 그냥 정상적으로 작동하고 코드; 클릭 이벤트가 브라우저 탐색을 유발하는 것을 막지 못해서 div를 표시하고 숨기는 것을 방해 할 수 있습니다.

$('#ClickMe').live('click', function(ev) { 
    $('#SomeDiv1').show(); 
    $('#SomeDiv2').hide(); 

    // Stop event handling in non-IE browsers: 
    ev.preventDefault(); 
    ev.stopPropagation(); 
    // Stop event handling in IE 
    return false; 
}); 
+0

나는 이것을 바꿨다. 그러나 나는 그 사건이 심지어 발포하고 있는지 알기 위해 경계를 두었고 어떤 경보도 나타나지 않는다. 라이브가 IE의 앵커에 이벤트를 첨부하지 않는 것 같습니다 – littlechris

+0

링크를 추가 할 때 수동으로 jQuery에서 생성하거나 AJAX 호출의 결과로 생성합니까? –

+0

div에 포함되어 Google지도 Gmarker.openInfoWindowHtml (MyDiv)을 사용하여 표시됩니다. 이것은 $ .Ready 함수에서 실행됩니다. – littlechris

1

나는 해결책이 있다고 생각한다. 나는 여전히 존재하지 않는 'a'태그에 '클릭'을 추가하여 동일한 문제를 해결했습니다. FF지만 IE에서는 작동하지 않습니다. 나는 '클릭'(특정 새로 고침)에 추가 기능을 추가하고 싶었

onclick="hideSubPage($('#formula-editor'));return false;" 

다음 a 태그는 onclick가 정의했다.

잠시 해킹을당한 후 IE에서조차도 a 태그에서 기존 onclick을 제거했고 모든 것이 작동했습니다.

기본적으로 jquery.live()이 IE에서 작동하려면 jquery.live()이 타겟팅하는 컨트롤에 이미 연결된 이벤트가 없어야합니다.

페이지 1에 a 태그에 이벤트를 추가하십시오. 2 페이지에서

$('#returnfromformulaeditor').live('click', function(ev) { hideSubPage($('#formula-editor')); ev.preventDefault(); ev.stopPropagation(); refreshFormulaList();return false; }); 

- 페이지 2

<a href='#' id="returnfromformulaeditor" onclick="hideSubPage($('#formula-editor'));return false;" class="BackLink">&lt;&lt;Return </a> 

전에 a 태그 -

<a href='#' id="returnfromformulaeditor" class="BackLink">&lt;&lt;Return </a> 
1

후 '는'태그 '를 클릭하십시오 "를 함께 클릭 이벤트를 바인딩하기 때문에 Document가 준비되어있을 때 핸들러를 처리하지만 DOM에 동적으로 요소가 생성되면 동일한 "클릭"이벤트를 첨부하지 않습니다. 그래서 우리는 "생방송"을 사용합니다.

야, ".live"가 IE8에서 작동하지 않으면 ".delegate"로 이동하십시오. 나는 이것을 사용하고 있으며 모든 브라우저에서 정상적으로 작동하고있다.

관련 문제