Как исправить "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();
редактировать
Что касается отправки событий, один из способов сделать это (используя 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