e.preventDefault(); 未定义不是一个函数

Jon*_*han 3 javascript jquery

单击 时出现以下错误,提示我的e.preventDefault(); --->e.” 。该函数本身是在 my 结束之前定义的,并且我只调用了一次 jQuery。undefined is not a function<button class='url_qry_add' onclick='url_qry_add(this);'></body>

函数结构如下:

var url_qry_add = function ( e ) {
    e.preventDefault();
    ...
};
Run Code Online (Sandbox Code Playgroud)

它曾经是:

$( "ul.url_qry" ).on( "click", "li .url_qry_add", function ( e ) {
    e.preventDefault();
    ...
});
Run Code Online (Sandbox Code Playgroud)

但后来动态添加的后续按钮没有被拾取。

因此,我一直在尝试弄清楚如何解决这个问题,并决定我应该尝试将问题函数转换为命名的“可调用”函数,并使用 手动将调用放入onclick='..'动态创建之前和之后存在的按钮中。

就像我说的,错误一定出在我创建函数的方式或调用它的方式上。该错误与文件的顺序无关,并且我没有意外地将函数嵌套在另一个函数或document.ready.

我究竟做错了什么?

Ale*_* T. 6

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

var url_qry_add = function (e) {
    console.log(typeof e.preventDefault); // function 
};
Run Code Online (Sandbox Code Playgroud)

更新:

我将尝试澄清它是如何“内部”工作的,当我们向函数 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);
};
Run Code Online (Sandbox Code Playgroud)

因此,我们有变量“ event ”(事件对象,其中有方法preventDefault等)和“ this ”(当前元素)。我希望这个解释能帮助您理解我们从哪里获取变量“事件”。