如何使用简单的代码片段触发两个不同 jQuery 版本的相同功能..?

How to trigger same function of two different jQuery version using simple code snippet..?

我想在此 select 框上注册 onchange 事件..

   <select id="demo">
        <option>Apple</option>
        <option>Orange</option>
        <option>Banana</option>
    </select>

我的页面上包含两个版本的 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>

我已经把这段代码放在脚本标签中了..

<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>

我使用

在 selectbox 上触发了 onchange 事件
$("#demo").val("Orange").trigger("change")

然后执行

 $("#demo").on("change",function(){..})

但不执行第二个

($m("#demo")..)

如何触发调用两个事件处理程序的 onchange 事件 ($ and $m)

我不确定是否有办法通过使用 jQuery 来做到这一点,但你可以通过像这样调度一个普通的 javascript 事件来做到这一点:

var event = new Event('change', {
    bubbles: true
});

$("#demo").val("Orange")[0].dispatchEvent(event);

工作示例

$("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);
});
<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>

编辑

这是相同的技术,现在无需单击即可触发文档准备就绪事件。在 Chrome、IE 和 Mozilla 上测试,运行良好:

$("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);
});
<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>

我的工作测试link:http://zikro.gr/dbg/html/multijq-trigger/

如您所见,它甚至在文档就绪事件中起作用。