0
我试图总结一些jQuery的功能,GWT,下面JS代码运行,大小为2GWT JSNI:通JS GWT的元素元素将失去所有的孩子
var html="<div><p>paragraph</p><div>second</div></div>";
var size=$(html).get(0).children.length;
alert(size);
但运行下面GWT代码
select(html).get(0).getChildCount();
只返回0,则select
功能如下图所示:
public class JQuery extends JavaScriptObject {
protected JQuery() {
}
public static final native JQuery select(String selector) /*-{
return $wnd.jQuery(selector);
}-*/;
public final native Element get(int index) /*-{
return this.get(index) || null;
}-*/;
}
我想知道为什么它只是升从JSNI方法中剔除了子元素,以及这个包装的正确方法是什么,以使其与原生jquery的行为完全相同?
谢谢。
-------------编辑-------------------------------- ----------------------------
我在一个真正的gwt项目中测试JSNI代码上面,它工作正常,子元素从js返回到java。但是在GwtTestCase中存在问题。
public class JQueryTest extends GWTTestCase {
@Override
public String getModuleName() {
return "com.jsnitest.JsniTest";
}
public void testSelectHtml() {
ScriptInjector.fromUrl("http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js").setWindow(
ScriptInjector.TOP_WINDOW).setCallback(new Callback<Void, Exception>() {
@Override
public void onFailure(Exception reason) {
}
@Override
public void onSuccess(Void result) {
int childCount = select("<div><p>paragraph</p><div>second</div><ul></ul></div>").get(0).getChildCount();
//Fail! childCount=0
assertEquals(3, childCount);
}
}).inject();
}
}
其实我确实使用gwtquery,它是我们项目中必备的第三个库,我非常感谢你在gwtquery上的精彩工作。我问这个问题的原因是我正在研究GWT的JSNI,并希望看到JSNI的特性,我的问题中的JSNI代码是在GWTTestCase中完成的,不知道这是否是问题的原因。 – Mike
所以你可以发布一些关于你想用你的jsni方法返回的对象的java代码吗? –
问题只存在于'GwtTestCase'中,问题已更新。 – Mike