Как исправить "element.dispatchEvent не функция", не ломая что-то еще?

У меня та же проблема, что и "element.dispatchEvent не является функцией" js ошибка, обнаруженная в Firebug FF3.0, но в Google Chrome.

Я написал <script>jQuery.noConflict();</script>после всех скриптов. Но теперь у меня есть другая проблема:

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

undefined не является функцией

а также

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

undefined не является функцией

Таким образом, первое исправление недействительно.

PS

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

Можете ли вы посоветовать другой способ?

2 ответа

Решение

Когда вы звоните jQuery.noConflict(); ты больше не общаешься jQuery с $ переменная.

Такие вещи, как $().click или же $(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!');
    }
});

Позже вы можете вызвать это событие. Вместо того, чтобы вызывать событие с помощью строки ('keydown'), мы создадим событие jQuery и передадим его.

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

jQuery(document).trigger(evt);

Это помогло мне! Добавление jQuery.noConflict(); непосредственно перед запуском кода jquery, а затем заменой всех «$» на «jQuery».

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

То же, что указано в приведенном выше решении @Jack

Другие вопросы по тегам