Отображение диалогового окна jquery UI после нажатия на форму бонсай
Привет у меня есть этот код
$(function() {
bonsai.run(document.getElementById('movie'), {
code: function() {
var rect= new Rect(0, 0, 100, 100);
rect.on('multi:pointerdown', function(e) {
$("#dialog-form").dialog("open");
});
},
width: 500,
height: 400,
});
});
Когда я нажимаю на мой прямоугольник, у меня появляется эта ошибка:
ReferenceError: $ не определено
Как я могу получить ссылку на JQuery?
3 ответа
BonsaiJS создает новый контекст выполнения (часто веб-работник) и код, который вы передаете внутри bonsai.run
выполняется в другой области, где jQuery недоступен. Подробности о том, как BonsaiJS выполняет код, можно найти здесь.
Но чтобы решить вашу проблему, вы можете пообщаться с так называемым контекстом BonsaiJS:
$(function() {
var movie = bonsai.run(document.getElementById('movie'), {
// note: this function will be stringified and sent to the runner context
code: function() {
var rect= new Rect(0, 0, 100, 100).fill('red').addTo(stage);
rect.on('multi:pointerdown', function(e) {
// this is how you would pass data with your message
stage.sendMessage('openDialog', {
id: '#dialog-form'
});
// no data:
// stage.sendMessage('openDialog', {});
});
},
width: 500,
height: 400,
});
movie.on('load', function() {
movie.on('message:openDialog', function(data) {
$(data.id).dialog("open");
});
});
});
Убедитесь, что переменная $ не перезаписана переменной Jquery в ядре jquery.
Порядок загрузки скрипта важен, запускайте скрипт после загрузки jQuery.
Может быть, вы вызываете эту функцию до включения JQuery Javascript? Сначала поместите ссылки на сценарии JQuery.