2014-11-07 6 views
3

<button class='url_qry_add' onclick='url_qry_add(this);'>을 클릭하면 e.preventDefault();---> "e."undefined is not a function이 표시됩니다. 함수 자체는 내 </body>이 끝나기 전에 정의되며 jQuery를 한 번 호출했습니다. 다음e.preventDefault(); 정의되지 않은 함수는

함수 구조는 다음

var url_qry_add = function (e) { 
    e.preventDefault(); 
    ... 
}; 

예전 동적으로 나중에 첨가

$("ul.url_qry").on("click", "li .url_qry_add", function (e) { 
    e.preventDefault(); 
    ... 
}); 

하지만 후속 버튼 픽업되지 않았다.

그래서 나는 그것에 대해 어떻게해야하는지 알아 내려고 노력했으며 문제 기능을 명명 된 "호출 가능"함수로 변환하고 수동으로 이전에 있던 버튼에 onclick='..'으로 전화를 걸어야한다고 결정했습니다. 동적 생성 후.

내가 말했듯이 오류는 함수 또는 내가 호출하는 방식을 작성한 방식이어야합니다. 이 오류는 파일 순서와 관련이 없으며 실수로 다른 함수 또는 document.ready의 함수를 중첩하지 않았습니다.

내가 뭘 잘못하고 있니?

답변

4
<button class='url_qry_add' onclick='url_qry_add(event);'> 

var url_qry_add = function (e) { 
    console.log(typeof e.preventDefault); // function 
}; 

업데이트 :

나는 우리가 url_qry_add를 작동하려면 속성을 추가 할 때, 그것은 "내부적으로"어떻게 작동하는지 명확히하려고 "내부는"그것은 다음과 같습니다 수 있습니다 :

document.querySelector('.url_qry_add').addEventListener('click', function (event) { 
    (function (event) { 
    url_qry_add(event, this, $(this)); 
    }).call(event.target, event); 
}); 

var url_qry_add = function (event, element, $jElement) { 
    console.log(event); 
    console.log(element); 
    console.log($jElement); 
}; 

따라서 변수 "이벤트"(이벤트 객체, 여기에는 메소드 preventBefaultefault 등이 있습니다) 및 " "(현재 요소). 이 설명이 변수 "이벤트"의 위치를 ​​이해하는 데 도움이되기를 바랍니다.

관련 문제