Prototype.js擦除jQuery触发器更新时的select

时间:2013-11-22 10:52:27

标签: jquery select prototypejs conflict updates

我发现了一件奇怪的事。在我的网站上我需要使用jQuery和Prototype.js,所以我在非冲突模式下使用jQuery并且它工作正常。但是我有一个jQuery脚本,它可以选择样式框,当选择item时,脚本会触发jQuery更新方法。

但由于某种原因,Prototype.js正在劫持此更新调用并删除选择框的所有内容,这是我不想要的。以下是示例代码:

<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript">jQuery.noConflict(); </script>
        <script src="//ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script>      
    </head>

    <body>  
        <select id="test">
            <option>1</option>
            <option>2</option>
        </select>

        <span onclick="jQuery('#test').trigger('update');">update</span>        
    </body>
</html>

`

这是测试的小提琴:http://jsfiddle.net/verify/xq9rb/

我认为它可能与Prototype自己的Update方法有关,它需要接收一些内容,这些内容取代了原始内容,但我不知道如何摆脱它。

1 个答案:

答案 0 :(得分:1)

你是对的 - 因为jQuery触发事件的方式 - 它将首先尝试在元素上运行任何方法(或沿原型链向上移动),然后触发事件。

我建议使用命名空间事件来防止类似于PrototypeJS处理事件的方式的冲突。

jQuery('#test').trigger('vendor:update');