2011-12-21 32 views
0

我需要一些帮助来理解jQuery如何工作。我正在为我的游戏使用awesomium ui,并且在从我的应用程序调用jquery对象的函数时遇到问题。这是我的问题。jquery如何处理js对象

假设我有这样的

<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); 
} 

感谢, 卡西姆

+0

谢谢大家的帮助! – Gasim 2011-12-21 11:26:57

+0

您可以提供解决方案作为答案。 – 2011-12-21 11:31:33

回答

2

从jQuery选择访问底层的“真实”的DOM对象,你需要使用get function - 我不知道Awesomium,但它看起来像你的代码,就像这是你所需要的。不要忘记,jQuery选择器可以匹配多个项目,所以get()返回一个数组,而不是单个对象。

所以第一个参数是这样的: -

jsobject: $('#test').get(0); 
+0

+1确实。注意到'jQuery'对象封装了所有选定的元素,'jQuery'实例几乎总是从其任何函数返回(例外是一些标量函数),这样可以将jQuery调用链接在一起流利的操作。 – HackedByChinese 2011-12-21 11:05:25

+0

它非常有意义,但由于某种原因它没有工作。 – Gasim 2011-12-21 11:25:53

1

我不知道Awesomium但可能jsobject应该是一个全局变量的名称,而不是一个表达式。你的代码应该是这样的:

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

jsobject: "awe_jsobject" 
+0

你的版本也没有工作。我不知道。我打算再研究一下。 – Gasim 2011-12-21 11:26:47