이 글은 주로 jquery 이벤트 처리의 일부 기능과 jquery 이벤트 이름 지정 메커니즘에 대한 관련 지식을 소개합니다. 소개 내용은 매우 상세하며 관심 있는 친구는 함께 읽어야 합니다.
#🎜 🎜# JQuery의 바인딩() 및 unbind()는 이벤트 바인딩 및 취소 메커니즘을 제공하며, 이를 통해 기본적으로 html에서 지원하는 이벤트는 물론 사용자 지정 이벤트도 바인딩할 수 있습니다. JQuery는 프로그래밍에 큰 유연성을 제공하는 사용자 정의 이벤트를 지원합니다. jquery 이벤트 처리의 몇 가지 기능을 함께 배워보겠습니다.$("#button1").bind("click",function(){ alert("func1"); }); $("#button1").bind("click",function(){ alert("func2"); });버튼1을 클릭하면 이 두 가지 이벤트 처리 기능이 실행됩니다. 어쩌면 위의 바인딩은 다른 익명 함수이며 다른 메모리 공간을 차지한다고 말할 수도 있습니다. 실제로도 그렇긴 하지만, 동일한 처리 기능이라 할지라도 여전히 중복된 바인딩 문제가 발생합니다. Button1을 클릭하면 다음 이벤트 핸들러 함수도 두 번 호출됩니다.
$("#button1").bind("click",sameFunc); $("#button1").bind("click",sameFunc); function sameFunc() { alert("func"); }대부분의 경우 이벤트 처리 기능은 한 번만 바인딩하면 되므로 JQuery 이벤트의 반복 바인딩 기능은 이벤트가 여러 번 실행되는 경우에도 주의해야 합니다. 버그가 없습니다. 결국 버그가 아닙니다.
$("#button1").bind("mousedown mouseup",function(){ console.log(11); });If 각각 이벤트 처리 기능이 다른 경우 다음 방법(json 개체)을 사용할 수 있습니다.
$("#button1").bind( { "mousedown":function(){ console.log("mousedown"); }, "mouseup":function(){ console.log("mouseup"); } } );3. 이벤트 개체와 맞춤 매개변수를 전달합니다.
$("#button1").bind("click", {name:"aty"}, function(eventObject){ alert("params=" + eventObject.data.name); });eventObject는 IE, FF의 이벤트 객체와 매우 유사하며 이를 통해 이벤트가 발생할 때 더 자세한 정보를 얻을 수 있습니다. 사용자 정의 매개변수를 지정하면 JQuery는 이를 이벤트 객체의 data 속성에 넣습니다. 즉, eventObject.data를 통해 전달한 매개변수 값을 얻을 수 있습니다. 4. 이벤트 취소의 세 가지 형태.
$("#button1").bind("click",function(eventObj){ console.log("click1"); }); $("#button1").bind("click",function(eventObj){ console.log("click2"); }); $("#button1").bind("mouseup",function(eventObj){ console.log("mouseup"); }); $("#button1").bind("mousedown",function(eventObj){ console.log("mousedown"); });$("#button1").unbind(): 버튼1에 바인딩된 모든 이벤트 핸들러를 취소합니다.
$("#button1").bind("click",function(eventObj){ console.log("click1"); }); $("#button1").bind("click",function(eventObj){ console.log("click2"); }); // try to cancel function2 $("#button1").unbind("click",function(eventObj){ console.log("click2"); });bind와 unbind는 동일한 익명 함수를 사용하지만 이 두 함수는 서로 다른 메모리 공간을 차지하므로 동일한 JavaScript 개체가 아닙니다. 똑똑하다면 바인딩과 바인딩 해제가 서로 다른 기능을 사용하면 목적을 달성할 수 있을까?라고 생각했을 것입니다. 이는 실제로 그렇습니다. 아래 코드는 정확합니다.
$("#button1").bind("click",func1); $("#button1").bind("click",func2); // try to cancel function2 $("#button1").unbind("click",func2); function func1() { console.log("click1"); } function func2() { console.log("click2"); }이것은 unbind를 사용하는 세 번째 형태입니다. 이 접근 방식은 익명 함수의 사용을 허용하지 않고 전역 함수(최소한)를 노출해야 하기 때문에 매우 좋지 않다는 것을 알 수 있습니다. 요구 사항 바인딩을 해제하면 볼 수 있습니다.) JQuery는 개인적으로 이 문제를 해결하기 위해 설계되었다고 생각하는 이벤트 네임스페이스 메커니즘을 제공합니다.
$("#button1").bind("click.a",function(eventObj){ console.log("click1"); }); $("#button1").bind("click.b",function(eventObj){ console.log("click2"); }); // success to cancel function2 $("#button1").unbind("click.a");볼 수 있는 점: 네임스페이스를 사용하면 특정 이벤트 유형에서 이벤트 처리 기능을 보다 우아한 방법으로 취소할 수 있습니다. 여기에서 언급할 가치가 있습니다. 네임스페이스의 사용은 바인딩 해제와 충돌하지 않으며 위의 세 가지 바인딩 해제 형식은 여전히 정상적으로 사용할 수 있습니다. $("#button1").unbind()는 여전히 버튼1의 모든 이벤트를 취소할 수 있으며 $("#button1").unbind("click")은 여전히 모든 클릭 이벤트를 취소할 수 있습니다. 이 호환성 디자인은 훌륭합니다.
使用命名空间还要1个好处:能够按照命名空间来取消事件。
// 2个命名空间a和b $("#button1").bind("click.a",function(eventObj){ console.log("click1"); }); $("#button1").bind("click.b",function(eventObj){ console.log("click2"); }); $("#button1").bind("mouseup.a",function(eventObj){ console.log("mouseup"); }); $("#button1").bind("mousedown.a",function(eventObj){ console.log("mousedown"); });
这段代码我们使用2个命名空间a和b,如果我只想要保留第2个click事件处理函数,其余的全部删除。我们可以有2种方式达到目的:
方式1:
$("#button1").unbind("click.a"); $("#button1").unbind("mouseup"); $("#button1").unbind("mousedown");
方式2:
$("#button1").unbind(".a");
很显然方式2更加简单,更加技巧性,虽然代码更不容易看懂,不过只要你熟悉JQuery就能看懂。项目中如果出现了你看不懂的代码,只有2种情况:要么别人不行,代码写的烂;要么自己不行,知识懂的少。如果不熟悉某种语言,又怎能用它写好代码呢?所以,代码质量、开发效率,和个人技能水平,团队水平紧密相关。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
위 내용은 jQuery 이벤트 처리의 특징(이벤트 이름 지정 메커니즘)에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!