>웹 프론트엔드 >JS 튜토리얼 >초보자가 자주 직면하는 일부 jquery 문제 모음_jquery

초보자가 자주 직면하는 일부 jquery 문제 모음_jquery

WBOY
WBOY원래의
2016-05-16 18:21:131155검색

ClassYuan 블로그 http://www.classyuan.com/ 다음은 몇 가지 예입니다:
1. HTML 요소가 포함된 이벤트를 로드하는 동시에 이벤트가 실행됩니다.
오류 코드:

코드 복사 코드는 다음과 같습니다.
$("#btnLoad" ).bind ("click",GetProduct());

올바른 코드
$("#btnLoad").bind("click", function() { GetProduct() })

이 코드에서는 Bind 메서드를 무시했습니다. of Api is bind (type,[data],fn)
fn을 단순 함수로 잘못 간주해서 이 코드는 로딩 시 fn을 한 번 실행하게 됩니다.
작성 형식의 실수입니다. .이유를 아시는 분이 조언을 해주셨으면 좋겠습니다.
2 변수 범위의 문제 (jquery의 문제는 아닌 것 같습니다. js와 .net의 차이입니다..)
복사 code 코드는 다음과 같습니다.
function text() {
2 for (var i = 0; i < 3; i ) {
3 $("삭제 ").attr({ id: "hr_" i, href: "javascript:;" }).addClass("btnCss").bind("click", function () { tes(i) } ).appendTo(".div_list");
4 }
5 }
6 function tes(id) {
7 Alert(id); 8 }

해당 ID를 알려주는 기능입니다. 결과적으로는 태그가 3개나 나오는 기능입니다. 모두 3입니다..
보세요.
변수 범위의 문제를 이해하세요. tes 함수에 전달된 매개 변수는 루프가 끝난 후의 i 값이므로 모두 3입니다.
이것은 .net과 다른 것 같습니다.
마지막으로 해결 방법 - -..
3. 이벤트 실행 순서 문제

코드 복사 코드는 다음과 같습니다.
2 Iphone
3

onclick 이벤트를 이 이미지에 바인딩합니다. 이벤트 내용 태그의 상위 항목에 href 속성을 추가하는 것입니다.
그러나 이벤트가 실행된 후에는 a 태그의 링크로 바로 이동합니다. 분석 후
href 이전에 클릭이 실행되어야 합니다. 즉, 이미지를 클릭하면 A 태그에 이미 href가 있고 동시에 A 태그가 실행되어야 합니다.
해결 방법.. 외부 a 태그를 제거하고.. 그런 다음 이벤트를 수정합니다.

코드 복사 코드는 다음과 같습니다. :
idwrap('< a href="http://www.baidu.com">')

이상은 제가 jquery를 처음 사용하면서 겪게 되는 문제들입니다. 여기까지만 두고 성장 과정으로 생각하겠습니다. 🎜>
첫 번째 질문
$('#btnLoad').bind('click', GetProduct)
바인딩 이벤트는 추가 후 함수 및 GetProduct()에 연결된다는 점을 기억하세요. 괄호를 사용하면 함수의 반환 값을 가져옵니다. 그리고 GetProduct의 반환 값은 분명히 함수가 아닙니다.
$("#btnLoad").bind("click",GetProduct())
는 다음과 같이 변경됩니다.
$("#btnLoad" ).bind("click",GetProduct)
해 보세요.
GetProduct()는 함수를 실행한 다음 값을 반환하지만 반환된 값은 fn 유형이 아닙니다.

두 번째 문제
사실 .NET에도 존재하는 문제입니다. 클로저에서 얻은 것은 i 변수의 주소이고, 이후에도 마찬가지입니다. 이 주소에 액세스하면 얻은 값도 항상 변경되므로 모든 테스트는 i 변수의 마지막 값인 3을 사용합니다.
이 문제는 다음과 같이 해결됩니다(코드를 단순화합니다).
for (var i = 0; i < 3; i ) {
(function(i) {
$('삭제').appendTo('.div_list').bind(' click', function() { tes(i) });
})(i);
}
이런 식으로 작성하는 원리를 이해하지 못해도 상관없습니다. 이 형태를 먼저 기억하시면, 앞으로도 비슷한 문제에 직면하게 될 것입니다. 즉, (function() { xxx })(); 실제로는 매우 간단합니다. 함수를 전달할 때 기본 유형 변수인 i가 값으로 전달됩니다. 즉, i의 현재 값이 이 함수에 복사되므로 이 익명 함수가 호출될 때마다 i가 전달됩니다.

세 번째 질문
에 대해 서로 독립적이며 외부의 영향을 받지 않습니다. a가 href 속성을 제공하지 않으면 href가 현재 페이지의 주소로 기본 설정되므로 이후로 점프하게 됩니다. 클릭. 따라서 인터넷에는 다음과 같은 여러 가지 인기 있는 처리 방법이 있습니다.
1.dfa2.dfa
3.dfa
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.