>  기사  >  웹 프론트엔드  >  jQuery_jquery에서 대리자를 사용할 때 발생하는 문제

jQuery_jquery에서 대리자를 사용할 때 발생하는 문제

WBOY
WBOY원래의
2016-05-16 15:51:331024검색

묶고 사는 건 익숙하지만 위임하는 건 익숙하지 않아...

동적으로 생성된 태그 요소에 대한 이벤트 바인딩 지원은 라이브 및 위임일 수 있지만 새 버전에서는 더 이상 라이브를 지원하지 않고 위임만 지원합니다

델리게이트는 다른 이벤트 바인딩 스타일과 달리 정말 특별합니다.

기존 바인드 스타일에 익숙해서 헷갈렸습니다.

간단히 말하면 부주의입니다.

delegate() 메서드는 지정된 요소(선택한 요소의 하위 요소)에 하나 이상의 이벤트 핸들러를 추가하고 이러한 이벤트가 발생할 때 실행할 함수를 지정합니다.

Delegate() 메서드를 사용하는 이벤트 핸들러는 현재 또는 미래의 요소(예: 스크립트로 생성된 새 요소)에 적용됩니다.

문법

$(selector).delegate(childSelector,event,data,function)

매개변수 설명
어린이 선택기 필수입니다. 이벤트 핸들러가 연결되는 하나 이상의 하위 요소를 지정합니다.
이벤트

필수입니다. 요소에 연결할 하나 이상의 이벤트를 지정합니다.

여러 이벤트 값이 공백으로 구분됩니다. 유효한 이벤트여야 합니다.

data 可选。规定传递到函数的额外数据。
function 必需。规定当事件发生时运行的函数。

比如这段小代码啊

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("div").delegate("button","click",function(){
  $("p").slideToggle();
 });
});
</script>
</head>
<body>
<div style="background-color:red">
<p>这是一个段落。</p>
<button>请点击这里</button>
</div>

</body>
</html>

我老写成了

$(document).ready(function(){
 $("div").delegate($("button"),"click",function(){
  $("p").slideToggle();
 });
});

子选择器不需要选择起来了..

不然就像我那样出现不知名的错误(点击会触发click,但点击其他元素也会触发click...)

以上所述就是本文的全部内容了,希望大家能够喜欢。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.