Dar*_*tel 8 jquery jquery-events
我想在这个选择框上注册onchange事件..
<select id="demo">
<option>Apple</option>
<option>Orange</option>
<option>Banana</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我的页面上有两个版本的jQuery,使用noConflict分隔
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$m = $.noConflict(true);
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我把这段代码放在脚本标签中..
<script>
$("div#hello").on("change","select#demo",function (){
console.log("in $ on function");
});
$m("select#demo").on("change",function(){
console.log("in $m on function");
});
</script>
Run Code Online (Sandbox Code Playgroud)
我在selectbox上使用触发了onchange事件
$("#demo").val("Orange").trigger("change")
Run Code Online (Sandbox Code Playgroud)
然后它执行
$("#demo").on("change",function(){..})
Run Code Online (Sandbox Code Playgroud)
但不要执行第二个
($m("#demo")..)
Run Code Online (Sandbox Code Playgroud)
如何触发调用两个事件处理程序的onchange事件($ and $m)?
我不确定是否有办法使用 jQuery 来做到这一点,但您可以通过分派一个简单的 javascript 事件来做到这一点,如下所示:
var event = new Event('change', {
bubbles: true
});
$("#demo").val("Orange")[0].dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
工作示例
var event = new Event('change', {
bubbles: true
});
$("#demo").val("Orange")[0].dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
$("div#hello").on("change","select#demo",function (){
console.log("in $ on function");
});
$m("select#demo").on("change",function(){
console.log("in $m on function");
});
$('#trigger_event').on('click', function(e) {
var event = new Event('change', {
bubbles: true
});
$("#demo").val("Orange")[0].dispatchEvent(event);
});Run Code Online (Sandbox Code Playgroud)
编辑
这是相同的技术,现在无需单击即可在文档就绪时触发事件。在 Chrome、IE 和 Mozilla 上测试,运行良好:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$m = $.noConflict(true);
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="hello">
<select id="demo">
<option>Apple</option>
<option>Orange</option>
<option>Banana</option>
</select>
</div>
<button id="trigger_event">Trigger Event</button>Run Code Online (Sandbox Code Playgroud)
$("div#hello").on("change","select#demo",function (){
console.log("in $ on function");
});
$m("select#demo").on("change",function(){
console.log("in $m on function");
});
$(document).ready(function() {
console.log('On document ready');
var event = new Event('change', {
bubbles: true
});
$("#demo").val("Orange")[0].dispatchEvent(event);
});Run Code Online (Sandbox Code Playgroud)
我的工作测试链接: http: //zikro.gr/dbg/html/multijq-trigger/
正如您所看到的,它甚至在文档就绪事件中工作。
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |