javascript - e.preventDefault(); undefined 不是函数

标签 javascript jquery

我收到以下错误信息,即我的 e.preventDefault(); --->e.undefined is not a function当点击 <button class='url_qry_add' onclick='url_qry_add(this);'> .函数本身是在我的 </body> 结束之前定义的而且我只调用了一次 jQuery。

函数结构如下:

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

曾经是:

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

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

所以我一直在想办法解决这个问题,并决定我应该尝试将问题函数转换为命名的“可调用”函数,并使用 onclick='..' 手动调用进入动态创建前后存在的按钮。

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

我做错了什么?

最佳答案

<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);
};

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

关于javascript - e.preventDefault(); undefined 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26796722/

相关文章:

javascript - 使用 jQuery 和 CSS 选择元素范围

javascript - jquery DOM 突变

javascript - 在 JavaScript 中从 css 规则中提取 RGB 和 RGBA

javascript - Bootstrap 拆分按钮下拉 : programmatic access to prevent overlapped click events

javascript - 在 JSONP 和 jQuery 中使用 PUT/POST/DELETE

javascript - 如何将CSS规则插入javascript?

javascript - Google 脚本函数参数中需要引号吗?

javascript - 浏览器下载页面时是否可以显示 Twitter Bootstrap 进度条?

javascript - 按类查找启用的文本区域的值

jquery - CSS/jQuery 下拉菜单问题