2012-07-24 4 views
0

이 코드를 가지고 :JQuery와 부하가 한 번

<script> 
$(document).ready(function() { 
    $('#lnk').click(function(e) { 
     e.preventDefault(); 
     url = $(this).attr('href'); 
     $("#content").load(this.href); 
    }); 

}); 
</script> 

<a href="http://google.com" id="lnk">Google</a> 
<a href="http://gmail.com" id="lnk">Gmail</a> 
<div id="content"> 

</div> 

내 콘텐츠 사업부에 대한 첫 번째 링크 (구글) 작동 및로드 컨텐츠를 클릭합니다. 그러나 두 번째 링크 (gmail)를 클릭하면 작동하지 않습니다.

아무도 나를이 문제를 이해하는 데 도움이 될 수 있습니까?

+0

둘 중 어느 것도 작동하지 않습니다. : X – Esailija

+4

귀하의 HTML은 유효하지 않습니다! 왜 두 요소에 대해 동일한 ID가 필요합니까? – Shyju

+0

왜 당신의'url' 변수에 href를 저장 한 다음 바로 다음 줄에 사용하지 않습니까? 요소 ID는 고유해야합니다. – MrOBrian

답변

1

ID는 고유하며 동일한 ID를 가진 여러 요소를 가질 수 없습니다 ($('#lnk')은 첫 번째 요소를 가져옵니다). 당신이 임의의 URL을로드 할 수 .load을 사용할 수 없습니다로 사용 클래스 대신

<script> 
$(document).ready(function() { 
    $('.lnk').click(function(e) { 
     e.preventDefault(); 
     $("#content").load(this.href); 
    }); 

}); 
</script> 

<a href="http://google.com" class="lnk">Google</a> 
<a href="http://gmail.com" class="lnk">Gmail</a> 

또한,이 작동하지 않습니다. 그 이름은 same origin policy입니다.

1

JQuery는 사용자가 지정한 ID를 가진 첫 번째 항목에 이벤트를 첨부합니다. 문서에는 해당 ID가있는 요소가 하나만 있어야하기 때문입니다. 대신 다음을 시도하십시오.

<script> 
$(document).ready(function() { 
    $('.lnk').on('click', function(e) { 
     e.preventDefault(); 
     $("#content").load(this.href); 
    }); 

}); 
</script> 

<a href="http://google.com" class="lnk">Google</a> 
<a href="http://gmail.com" class="lnk">Gmail</a> 
<div id="content"> 

</div> 
+0

여러분 모두 감사합니다. 나는 멍청한 놈을 말했고 나는 아주 천천히 배울 것 같네요. 다시 여러분, 감사드립니다. –

+0

문제 없습니다. 새로운 on() 구문으로 전환하기 위해 조금 업데이트했습니다. – PCasagrande