2

我有与“element.dispatchEvent 不是函数”相同的问题FF3.0 的萤火虫但在谷歌浏览器中捕获的 js 错误。

我已经写<script>jQuery.noConflict();</script> 了所有的脚本。但现在我有另一个问题:

  ...
  $("a.try").click(function () {
  ...

undefined 不是函数

 ...
 var blockHeight = $(window).height();
 ...

undefined 不是函数

因此第一个修复无效。

附言

我在其中包含脚本的 html 部分:

....
<script type="text/javascript"
        src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript"
        src="<c:url value='/resources/js/underscore.js'/>"></script>
<script type="text/javascript"
        src="<c:url value='/resources/js/jquery-1.8.2.min.js'/>"></script>

<script type="text/javascript"
        src="<c:url value='/resources/js/jquery.mousewheel.js'/>"></script>
<script type="text/javascript"
        src="<c:url value='/resources/js/popup.js'/>"></script>
<script type="text/javascript"
        src="<c:url value='/resources/js/jquery.jscrollpane.min.js'/>"></script>

<script type="text/javascript"
        src="<c:url value='/resources/js/scroll-startstop.events.jquery.js'/>"></script>

<script type="text/javascript"
        src="<c:url value='/resources/js/jquery-ui-1.10.0.custom.min.js'/>"></script>

<script type="text/javascript"
        src="<c:url value='/resources/js/script-ini.js'/>"></script>
<script type="text/javascript"
        src="<c:url value='/resources/js/map/map.js'/>"></script>
<script type="text/javascript"
        src="//maps.google.com/maps/api/js?sensor=true&js?v=3.exp&libraries=places"></script>

<script type="text/template" id="terminal-template">
    ...
</script>
<style>
    .grey-terminal {
        background-color: rgb(226, 226, 226);
    }
</style>
<script type="text/javascript"
        src="<c:url value='/resources/js/addTerminal.js'/>"></script>
<script>jQuery.noConflict();</script>
...

你能建议另一种方式吗?

4

2 回答 2

2

当您调用时,jQuery.noConflict();您不再jQuery$变量关联。

所以像$().clickor之类的东西$(selector)会抛出错误。相反,您可以执行以下操作:

jQuery.noConflict();
jQuery('a.try').click(handler);
jQuery(window).height();

或者,您也可以将 jQuery 分配给一个新变量,如下所示:

var j$ = jQuery.noConflict();
j$('a.try').click(handler);
j$(window).height();

http://jsfiddle.net/wL4mc03a/

编辑

至于调度事件,您可以执行此操作的一种方法(使用 jQuery)是trigger事件。假设您有一些如下所示的代码:

jQuery(document).on('keydown', function(e){
    if (e.which === 42) {
        alert('That is the key to life!');
    }
});

稍后,您可以触发此事件。我们将创建一个 jQuery 事件并传递它,而不是使用字符串 ('keydown') 触发事件。

var evt = jQuery.Event('keydown');
evt.which = 42;

jQuery(document).trigger(evt);
于 2014-11-22T18:25:23.463 回答
1

这对我有帮助!添加 jQuery.noConflict(); 就在开始jquery代码然后用'jQuery'替换所有'$'之前。

<script type="text/javascript">
  
    jQuery.noConflict();
    jQuery(document).ready(function() {
        ....
        ....
    });
</script>

与上述解决方案@Jack中提到的相同

于 2021-02-05T04:06:32.700 回答