영웅 여러분, 저는 최근에 간단한 웹사이트를 디자인하고 있었는데 웹사이트에서 일부 jq 코드를 복사했습니다.
일부 코드 세그먼트의 시작 부분이 $(function(){...})인 것을 발견했습니다. 그런 다음 $(function(){...}) 안에 이 형식으로 작성하겠습니다. 예를 들어 $(function( ){$('#denglu_submit').click(function(){...
그러나 일부 코드 조각에는 $(function(){})이 없고 직접 $('#denglu_submit') 이 있는 것도 확인했습니다. click(function(){...etc., 테스트해봤는데 둘 다 작동하는 것 같네요. 그럼 차이점이 뭔지 모르겠네요
过去多啦不再A梦2017-06-26 10:53:00
두 메소드를 모두 넣으면 html
页面结构下面的话,写不写$(function(){})
都行,都是等到页面加载完后执行(别忘了html
파싱되어 위에서 아래로 로드됩니다.
하지만 페이지 구조에 모두 넣으면 차이가 커집니다. $(function(){})
为网页加载完后执行,没有$(function(){})
直接写的话是按html页面从上到下的顺序执行,也就是是说如果js
코드 실행 시간이 상대적으로 길어서(예: 많은 양의 데이터 획득) 다음 HTML 콘텐츠가 로드되어 표시되지 않습니다. js가 실행됩니다. 이것은 분명히 불합리한 일이다. HTML 콘텐츠가 먼저 표시되도록 해야 합니다.
그래서 우리는 코드를 작성할 때 보통 $(function(){})
为好,这样就算js
코드에 오류가 있거나 실행하는 데 시간이 오래 걸리는 경우 사용자의 웹 페이지 탐색에 영향을 주지 않고 페이지의 주요 내용을 로드할 수 있습니다. 그리고 페이지가 완전히 로드되도록 하려면 페이지 구조 아래에 코드를 배치하는 것이 가장 좋습니다(결국 HTML은 위에서 아래로 순서대로 구문 분석되고 로드됩니다).
그 외 약간의 지식$(function(){})
为网页加载完后执行,好像和原生js的window.onload = function() {}
동일하지만 차이점이 있습니다. 전자는 구조(그림 제외)가 로드된 후 실행되고, 후자는 구조(그림 포함)가 로드된 후에 실행됩니다.
女神的闺蜜爱上我2017-06-26 10:53:00
$(function(){}) 이것은 js가 로드되고 dom 구조가 로드된 후에 실행되는 내부 논리입니다.
$('#denglu_submit').click(function(){...}) 이는 js가 로드된 후에 실행됩니다.
阿神2017-06-26 10:53:00
$(function(){...})
여기의 내용은 실행하기 전에 페이지 노드나 참조 파일이 로드될 때까지 기다리는 것입니다. 이렇게 하면 페이지 노드가 로드되고 선택기에 해당하는 노드도 사용할 수 있게 됩니다.
$('#denglu_submit').click(function(){...})
,这个是等加载到这里的时候就执行了,执行的时候并不知道#denglu_submit
有没有加载到页面上。如果页面没有这个节点,那么对应的事件是没有反应的。
你可以试着把这两段段代码都放到head
실내에서 실행해 보면 차이점을 알 수 있습니다!
给我你的怀抱2017-06-26 10:53:00
먼저 대답해 보겠습니다. $는 함수 이름입니다. 예:
으아악이런 식으로 $라는 함수를 정의하고 실행해 보세요.
그런 다음
여기서 매개변수는 $ 함수에 전달됩니다. 이 매개변수는 익명 함수(이름이 없는 함수, 클로저라고도 함)입니다.
으아악
최종 실행은 위와 동일하지만 더 유연하게 실행할 수 있습니다.
으아악
실제로 '#denglu_submit' 문자열이 $ 메서드에 전달된 다음 익명 함수가 $의 클릭 함수에 전달됩니다. 전체 함수 디자인은 다음과 유사합니다.
물론 jquery는 확실히 더 복잡합니다.