как jquery обрабатывает объекты js - PullRequest
0 голосов
/ 21 декабря 2011

Мне нужна помощь, чтобы понять, как работает jquery. Я использую интерфейс awesomium для своей игры, и у меня возникают проблемы с вызовом функций объектов jquery из моего приложения. Вот мой вопрос.

Предположим, у меня есть такой код

<div id="test">
  <span>Hello World</span>
</div>

и я запускаю событие

$('#test').trigger('click');

что делает

$('#test').on('click',function() { $(this).css('color','red'); }

Это больше вопрос javascript, поэтому я собираюсь немного рассказать о функции приложения, которую я использую. Awesomium, имеет функцию

awe_webview_call_javascript_function

, который принимает параметры как объект javascript, имя функции внутри объекта и параметры функции. Итак, я передаю параметры как

jsobject: "$('#test')"
function: "trigger"
parameters: "click"

программа не работает, и я знаю, что причина в объекте JS. Итак, мой вопрос, как jquery реализует свои элементы как объекты js? как я могу получить к нему доступ?

РЕДАКТИРОВАТЬ: Я нашел решение проблемы. Я создал триггер глобальной функции с параметром jquery:

function trigger(jobj, e, params) {
    $(jobj).trigger(e,params);
}

Спасибо, Gasim

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Чтобы получить доступ к базовому «реальному» объекту DOM из селектора jQuery, вам нужно использовать функцию get - я не знаю Awesomium, но из вашего кода это выглядит так, как будто это то, что вам нужно.Не забывайте, что селекторы jQuery могут совпадать с несколькими элементами, поэтому get () возвращает массив, а не один объект.

Так что первый параметр будет выглядеть примерно так: -

jsobject: $('#test').get(0);
1 голос
/ 21 декабря 2011

Я не знаю Awesomium, но, вероятно, jsobject должен быть именем глобальной переменной, а не выражением.Ваш код должен выглядеть примерно так:

window.awe_jsobject = $('#test');

jsobject: "awe_jsobject"
...