2011-01-07 3 views
2

Tumblr의 login page은 많은 사람들에게 영감을주었습니다. 애호가 개발자로서 나는 로그인 양식을 어떻게 작성했는지보고 싶었습니다. 그래서 같은 불필요한 코드를 멀리했다 및 단순화 된 버전 함께했다 : 나는, 나는 그들의 좋은 효과를 얻기 위해 다음과 같은 사용하여 시도 다른 페이지에 jQuery를 1.3를 사용할 때 jQuery에서 Uncaught TypeError가 코드 충돌로 인해 발생합니까?

<div id="login_form_container"> 
    <form method="post" action="logged-in.html" id="login_form"> 
     <div class="input_wrapper"> 
      <label for="login_email">Email address</label> 
      <input type="text" name="email" id="login_email" value=""> 
     </div> 
     <button type="submit"><span>Log In</span></button> 
    </form> 
</div> 

가보고. 그것은 아니다 확실히 그들은 그것을 가지고 있지만, 매우 단순화 된 버전은 어떻게이 페이지에 코드 만 인 경우

<script> 
$("input#login_email").click(function() { 
    $(".input_wrapper").addClass("blurred filled"); 
}); 

$("input#login_email").blur(function() { 
    $(".input_wrapper").removeClass("blurred"); 
}); 
</script> 

이 좋은 멋쟁이 작동하지만, 내가 jQuery를 다른 비트 페이지에 넣을 때,

Uncaught TypeError: Cannot call method 'click' of null 
    (anonymous function) 

크롬, 파이어 폭스 또는 사파리와 동일하므로 분명히 제 코드입니다.

문제가 무엇인지 아는 사람이 있습니까?

  • 페이지의 다른 곳에서 충돌하는 jQuery 참조가 원인 일 가능성이 있습니까?
  • 더 확실한가요?
  • 함수 이름을 지정하지 않았기 때문입니까?

코드가 격리되어 작동하지만 페이지의 다른 요소와 결합 될 때 왜 나는 당황합니다. 이것은 나를 곤란하게 만든다.

+0

같은 스크립트가 페이지에도 * * 프로토 타입 변경합니다? –

+0

당신은 정확합니다. 내가 문제를 격리시키기 위해 내 자신의 사냥을했는데 Scriptaculous.js와 Prototype.js 모두에서 발생하는 충돌이 있습니다. 어떻게 해결할 수 있습니까? –

답변

5

<script src="jquery.js"></script> 
<script type='text/javascript'> 

jQuery.noConflict(); 
jQuery("input#login_email").click(function() { 
    jQuery(".input_wrapper").addClass("blurred filled"); 
}); 

jQuery("input#login_email").blur(function() { 
    jQuery(".input_wrapper").removeClass("blurred"); 
}); 
</script> 
+1

당신은 또한 다음과 같이 할 수 있습니다 :'var $ j = jQuery.noConflict();'이것은'$ j' 변수를 일반적인'$'대신에 새로운 jQuery 함수로 할당 할 것입니다. '$ j ('input # login_email')' – Dan

+1

다른 프레임 워크보다 먼저 jQuery 프레임 워크를 가져와야한다는 것에 주목해야한다. 그리고 다른 프레임 워크를 가져 오기 전에'jQuery.noConflict()'함수를 호출하십시오. – Dan

+0

& @dan 위의 내용은 로그인 양식이 작동하는 것을 허용한다는 의미에서 작동하지만, 다른 모든 작업을 중단하는 것처럼 보입니다. 나는 또한 다음과 같은 오류가 던져 : 'catch되지 않은 형식 오류를 : 부동산의 '$'개체의 [객체는 DOMWindow] prototype.js에 & controls.js 모두에 발생하는 function' (script.aculo.us의 일부)하지 내 코드에 더 큰 문제가있는 것처럼 들리지만이 문제는이를 강조하는 것일뿐입니다. 흠. 귀하의 답변에 감사드립니다 –

관련 문제