2011-08-04 6 views
0

AJAX 호출 후 콘텐츠에서 일부 링크를 선택하려고하는데 IE6 및 IE7에서 작동하지 않는 것 같습니다. (피난처 ' 8 또는 9 테스트). 클릭하면 링크가 무시되고 대신 경고가 발생합니다. 그러나 IE는 여전히 주소로 이동하려고합니다. 크롬과 파이어 폭스에서 잘 작동합니다. 인 AJAX에 의해 검색되고있는 조각주의 할

<a href="someplace.html">someplace 2</a> 

흥미로운 일을 전화,

다음은 주요 HTML 문서

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head> 
<title>Cavern Sounds - Music production services</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
</head> 
<body> 
<a href="someplace.html">someplace 1</a> 
<div id="content"></div> 
<script type="text/javascript"> 
$.ajax({ 
    url: "content.html", 
    success: 
    function(html){ 
     $("#content").html(html); 
     $('a[href="someplace.html"]').click(function(e){ 
     e.preventDefault(); 
     alert("hello world");}); 
    } 
}); 
</script> 
</body> 
</html> 

그리고 여기에 "content.html는"의 IE 여전히 오버라이드 (override) 첫 번째 링크 (AJAX 호출에 의해 검색되지 않는 링크). 이것은 AJAX 호출에 의해 검색된 내용 내에서 오버라이드되지 않는 링크 일뿐입니다.

모든 의견을 환영합니다. 감사!

+1

제쳐두고, 마지막'script' 태그를 몸체 또는 머리 안쪽에 넣어야합니다. – Jacob

+0

아, 고마워, 그래, 난 그냥 예를 만들 때 엉망이 됐어. –

+2

'$ ('a [href * = "someplace.html"]')'또는 this (로 끝나는 것)와 같은 것이 아니라 "someplace.html"을 포함하는 href에 대한 선택기를 사용해보십시오 :'$ ('a [href $ = "someplace.html"]')' – jfriend00

답변

2

이벤트를 바인딩 라이브 사용되는

$(function(){ 

$('a[href*="someplace.html"]').live('click', function(e){ 
     e.preventDefault(); 
     alert("hello world"); 
}); 

$.ajax({ 
    url: "content.html", 
    success: 
    function(html){ 
     $("#content").html(html); 
    } 
}); 

}); 
+0

+1 정확히 내 생각 Shankar! – kasdega

+0

흠, 그냥 해봤 어. 여전히 IE6과 7에서는 작동하지 않는 것 같습니다 ... =/ –

+0

ajax 호출 성공 처리기의 html 내용을 경고하고 그 안에 앵커 태그에 대한 href가 무엇인지 확인할 수 있습니까? 실렉터가 일치하지 않아 이벤트가 실행되지 않는다고 생각합니다. – ShankarSangoli

0

.click() 대신 .live()를 사용하거나 .delegate()를 사용하는 것이 좋습니다.

바인딩하려는 링크가 나중에 소개되었으며 .click() 바인딩 전에 사용하지 못할 수 있습니다. JSFiddle

+0

은 트릭을 수행하지 않는 것 같습니다. =/ –

+0

예, AJAX (반환 된 콘텐츠) 셀렉터 문제 일 것이라고 생각하지만 여전히 왜 첫 번째 링크가 아닌 작동하는지 이해할 수 없습니다. 두번째 것. 나는 여기에 어떤 종류의 벌레가 있다고 생각한다 ... –

1

이 코드를 시도 이것을 시도하십시오 ...

다음은이에 대한 JSfiddle있어하지만 지금은 그것이 선택의 문제였다 어쩌면처럼 보인다 여기

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head> 
<title>Cavern Sounds - Music production services</title> 
<script type="text/javascript" 

src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
</head> 
<body> 
</body> 
<script type="text/javascript"> 
$.ajax({ 
    url: "content.html", 
    success: 
    function(html){ 
     $("body").html(html); 
     $('a[href*="someplace.html"]').live("click",(function(e){ 
     e.preventDefault(); 
     alert("hello world");})); 
alert($('a[href*="someplace.html"]').size()); 
    } 

}); 
</script> 

자세한 내용은 Error in jquery attribute selector and IE6-7

+0

+1 나는 셀렉터 것을 보지 못했습니다. 바인딩에 너무 집중했습니다. – kasdega

관련 문제