在GWT jsni中使用jquery

前端之家收集整理的这篇文章主要介绍了在GWT jsni中使用jquery前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法使用
$("#"+profileId).offset().top

从我的gwt jsni函数里面.我试过了

$wnd.$("#"+profileId).offset().top

但这也不行.我觉得我在这里缺少语法.有人可以帮忙吗

解决方法

这个问题的三个解决方案:

1-你的Jsni代码看起来很好,除了你必须将它包含在相应的本机函数中,并返回一个double(或任何其他数字类型,如果你想要gwt进行转换).

native double getTop(String profileId) /*-{
   return $wnd.$("#" + profileId).offset().top;
 }-*/;

如果您想通过UncaughExceptionHandler查看错误,您应该将代码封装在$entry块中

native  double getTop(String profileId) /*-{
  return $entry(function(data) {
    return $wnd.$("#" + profileId).offset().top;
  });
}-*/;

2-但是,不是使用jQuery,我鼓励你使用gwt-query aka gQuery.所以你不必在你的.html中加载jQuery,而不需要在你的应用程序中处理jsni.

使用gQquery,你有几乎相同的jQuery语法,但在java中,所以你有类型安全,重构,测试….但是,你将有几十个实用程序(最简单的ajax,承诺,选择器等),它们不在gwt核心

gQuery是一个轻量级的库,从gwt完全重写.它不是jQuery库的包装(如在另一个答案中错误地说),你不必在你的页面中包含jquery.js.

像任何其他gwt库一样,gwt编译器可以摆脱您从gquery中使用的任何东西.在你的方法中,你的应用程序必须加载所有的jquery内容.

所以在你的情况下,并使用gquery在.java类中写这个代码

import static com.google.gwt.query.client.GQuery.*;
... onModuleLoad() {
   int top = $("#"+profileId).offset().top;
}

3最后,您可以选择使用纯gwt代码获取元素的偏移量,如果您知道其id:

int top = DOM.getElementById(profileId).getOffsetTop();

猜你在找的jQuery相关文章