2014-12-02 33 views
1

我在使用纯Javascript与jQuery混合使用时遇到了这个问题(我使用的是两个不同的库)。因此,对于文本输入字段,纯JavaScript脚本依赖于使用addEventListener方法添加的更改事件绑定。另一个jQuery插件(datetimepicker)用于更改该字段,并在更新值后触发jQuery.change()方法。jQuery.change()与addEventListener不兼容?

问题是,侦听器没有被jQuery事件触发。 下面是一些简单的代码来说明问题。

<!DOCTYPE html> 
<html> 
<body> 
<input id="abc">abc abc.</input> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script> 
document.getElementById('abc').addEventListener("change", function(){ 
    alert('change event triggered'); 
}); 
$('#abc').change(); 
</script> 
</body> 
</html> 

鉴于这样的非常简单的HTML页面,事件侦听器实际上不会被jQuery.change()方法被触发,所以警报框将不会显示。如果我手动更改输入字段,则该事件正常工作。

跟进: 如果使用jQuery进行事件绑定和触发,没有问题。 问题是,我正在使用一个用纯JavaScript编写的库(JSONEditor [https://github.com/jdorn/json-editor])),并且使用Javascript API添加事件绑定,并且我正在使用的其他库更改了某些输入字段并使用jQuery触发了该事件,并且该事件未被捕获。

+1

javascript不是图书馆。 jQuery是一个JavaScript库。 – 2014-12-02 06:18:09

+0

为什么你不能使用jQuery事件处理程序 – 2014-12-02 06:19:48

+0

此代码工作正常,没有jQuery。小提琴http://jsfiddle.net/qw2z22m9/ – Aditya 2014-12-02 06:20:24

回答

1

使用trigger() jQuery中

$('#abc').on("change", function(){ 
    alert('change event triggered'); 
}).trigger("change"); 
+0

我只是想了解为什么jQuery触发事件不能被监听器捕获。肯定有一些解决方法。 – 2014-12-03 09:23:19

0

尝试内document.ready()包装jQuery的代码,并使用简单的jQuery事件处理程序用于此目的,如下所示: -

<script> 
$(document).ready(function(){ 
    $('#abc').on('change',function(){ 
    alert("here"); 
    }).change(); // trigger `.change()` event on page load. 
}); 
</script> 

或者,如果你要动态生成HTML用Jquery,然后尝试事件代表团: -

<script> 
$(document).ready(function(){ 
    $(document.body).on('change','#abc',function(){ 
     alert("here"); 
    }).change(); // trigger `.change()` event on page load. 
}); 
</script> 
+0

不幸的是,由于JSONEditor([https://github.com/jdorn/json-editor])添加了事件绑定,我无法轻松使用jquery事件处理程序。 – 2014-12-03 09:22:14

+0

@JasonHuang ...上述链接无法正常工作.. .try我的第二个答案.. – 2014-12-03 09:33:36

+0

对不起,我想我没有把问题弄清楚。问题是如何触发jQuery中addEventListener方法添加的监听器。 – 2014-12-04 05:04:53

相关问题