从 GWT 调用 JQuery 函数

2023-12-28

我正在启动一个使用 GWT 的项目,设计团队使用 HTML 和 JQuery 制作了一个原型。我实际上正在使用 UIBinder 来“重建”UI。我的问题是应用程序有一个使用 JQuery 的下拉菜单...但它不起作用

到目前为止,我尝试的是在 UIBinder XML 中使用 HTMLPanel 并插入菜单,我保留 .js 文件并在 HTML 文件中引用它们,希望能够拾取这些操作...但没有运气。

这是menu.ui.xml,菜单显示但鼠标没有悬停

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<!-- menu --> 
 <ul id="menu"> 
    <li class="home"><a href="#"><span>Accueil</span></a></li> 
    <li class="configuration"> 
        <g:Anchor ui:field="configurationButton" href="#">
                                   <span>Configuration</span></g:Anchor> 
        <div class="submenu"> 
            <div class="group"> 
                <ul> 
                    <li> 
                        <a href="#">Fiches de configuration</a> 
                        <ul> 
                            <li><a href="#">Organisme</a></li> 
                            <li><a href="#">Groupe opérationnel</a></li> 
                            <li><a href="#">Unité opérationnelle</a></li> 
                            <li><a href="#">Immeuble</a></li> 
                        </ul> 
                    </li> 
                </ul>                    
            </div> 
        </div> 
    </li> 
    <li class="audit"><a href="#"><span>Audit</span></a></li> 
    <li class="result"><a href="#"><span>Résultats</span></a></li> 
    <li class="scenario"><a href="#"><span>Scénarios</span></a></li> 
    <li class="document"><a href="#"><span>Documents</span></a></li> 
 </ul>
<!-- menu.end -->   
</g:HTMLPanel>

JQuery 代码位于单独的文件 common.js 中

$('#menu').find('submenu').each(function(){
alert("inside");
    var totalWidth = 0;
    $(this).children().each(function(){
        totalWidth += $(this).outerWidth();
    }).end().css({
        'display'   : 'none',
        'width'     : totalWidth
    });
}).end().css({
    'overflow'  : 'visible'
});

入口点

public class M3T implements EntryPoint {    
 public void onModuleLoad() {       
    Menu menu = new Menu();
    RootPanel.get("menuwrapper").add(menu);     
}
}

在 HTML 中,我有一个插入菜单的 div

<script src="js/jquery-1.6.1.min.js" type="text/javascript"></script> 
<script src="js/jquery.lib.min.js" type="text/javascript"></script> 
<script src="js/common.js" type="text/javascript"></script> ...

<div id="menuwrapper"> </div>

有没有什么方法可以让它在不使用 GQuery 或 JSNI 的情况下工作

谢谢


我尝试了 elvispt 的解决方案,它有效。在 JSNI 代码中,我必须替换$ with $wnd.jQuery因为否则它无法编译。

我还尝试了我决定实现的第二个解决方案:我没有在 Menu 周围使用包装器,而是在 Menu 类中重写了 onAttach() 并调用 bind

import com.google.gwt.core.client.GWT;     
public class Menu extends Composite  {

    private static MenuUiBinder uiBinder = GWT.create(MenuUiBinder.class);    
    interface MenuUiBinder extends UiBinder<Widget, Menu> {}        

    public Menu() {
        initWidget(uiBinder.createAndBindUi(this));
    }

     @Override
     public void onAttach() {
         super.onAttach();
         bind();
     }      

     private static native void bind() /*-{
          $wnd.jQuery('#menu').find('.submenu').each(function(){
         alert("inside");
           var totalWidth = 0;
            $wnd.jQuery(this).children().each(function(){
              totalWidth +=  $wnd.jQuery(this).outerWidth();
           }).end().css({
          'display'   : 'none',
          'width'     : totalWidth
           });
         }).end().css({
           'overflow'  : 'visible'
         });
     }-*/;      
}

再次感谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 GWT 调用 JQuery 函数 的相关文章

随机推荐

  • javafx 移植应用程序性能不佳

    我刚刚使用 gradlew 将一个名为 PuzzlePieces 的示例 netbeans javafx 项目移植到 android 中 该应用程序的性能如此糟糕 是什么原因造成的 我的设备 LG E975 4 4 kitkat This
  • 无法转换类型的对象

    在我的 wpf 应用程序中尝试将字符串从一个窗口发送到另一个窗口时出现错误 无法将 WpfApplication4 LoginWindow 类型的对象强制转换为 WpfApplication4 MainWindow 类型 在我的登录窗口中
  • 如何在 jersey 2.0 中使用 hk2 注入常量?

    如何在球衣中使用 HK2 将常量注入某个类 有了Guice 我可以上一些像这样的课程 public class DependsOnFoo Inject public DependsOnFoo Named FOO String foo 我会在
  • python 中基于 websocket 的 MQTT

    python 是否支持通过端口 8080 订阅 mqtt 代理 import sys import paho mqtt client as mqtt def on connect mqttc obj flags rc print rc st
  • 访问图中重复访问次数最少的所有节点

    我有一个基于图块的地图 其中几个图块是墙壁 其他图块是可步行的 可步行的瓷砖构成了我想在路径规划中使用的图表 我的问题是他们有什么好的算法可以找到访问图中每个节点的路径 从而最大限度地减少重复访问吗 例如 地图示例http img220 i
  • app:srcCompat 不适用于 ImageView

    我正在向库项目添加矢量可绘制支持 并使用app srcCompat引用可绘制的矢量 唯一有效的视图是 ImageButton 我不知道为什么 这是我的 build gradle 的相关部分 android defaultConfig vec
  • 从另一台具有不同 Gradle 版本的 PC 导入 Android Studio 项目?

    我有一个用 Android Studio 版本 1 3 2 编写的 Android studio 项目 现在 在另一台装有 Android Studio 2 1 2 的 PC 上 我想导入或打开该项目 但是当我尝试打开时 我的 Gradle
  • 发送 XMLHttpRequest 时缓存结果出现问题?

    我对 AJAX 和缓存的想法很陌生 On the AJAX 向服务器发送请求 http www w3schools com ajax ajax xmlhttprequest send asp来自 W3Schools 它说你应该添加 t Ma
  • 为什么不允许 movl 从内存到内存?

    我想知道集会中是否允许这样做 movl edx eax 我猜它会访问第一个操作数中的内存并放入 第二个操作数的内存 例如 a b 但我还没有看到任何处理此类问题的示例 所以我猜这是不允许的 另外 我被告知这是不允许的 leal esi ed
  • 什么是 Git 修剪?

    我不小心修剪了一些远程分支 我真的不知道这样做的后果是什么 我单击了 Git 扩展中的 修剪远程分支 按钮 认为它会删除远程分支 官方文档说 git prune 从对象数据库中删除所有无法访问的对象 我实在不明白这是什么意思 我猜这可能会删
  • 需要帮助使用 Perl 修复此正则表达式代码吗?

    我需要您的专业帮助来使用 perl 修复此正则表达式代码 我有这个数据文件 Data SCSI test A ccccccccccccccccc aaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb Data SCSI t
  • 如何在 python 代码中利用 locals() ?

    我在阅读时偶然发现了以下警告像 Pythonista 一样编码 惯用的 Python http python net goodger projects pycon 2007 idiomatic handout html作者 大卫 古杰 文章
  • 如何使用 on_delete 属性在用户模型的外键字段中设置用户全名?

    我在 django 中有一个模型 它具有带有用户模型的外键 class News models Model user models ForeignKey AUTH USER MODEL on delete models SET messag
  • 内容和 div 之间的边距溢出滚动条

    我使用以下代码来保持菜单项固定 同时允许内容滚动 因为它似乎是所有浏览器中最稳定的方法 body overflow hidden div content height 100 overflow auto 我的问题很简单 但我似乎无法弄清楚
  • Mongodb聚合框架|对多个值进行分组?

    我想使用 mongoDB 的聚合框架来运行 SQL 中的内容 看起来有点像 SELECT SUM A B C from myTable GROUP BY B C 文档指出 您可以指定管道中文档中的单个字段 先前计算的值或由多个传入字段组成的
  • 在 Azure Web App 上打开其他端口

    我最近将 NET Web API 2 应用程序从 Azure 云服务迁移到 Azure Web 应用程序 但是 我们有一个遗留应用程序需要与端口 8080 和 444 上的 API 进行通信 有没有办法在网络应用程序上打开额外的端口 你不能
  • django 1.9 和注册/login.html

    我正在开发 django 1 9 项目 在 Django 1 7 7 中 登录功能可以正常工作 但现在我一直有 registration login html Template Does Not Exist 模板 login html lo
  • 将 OpenIdConnect 与 AzureFunctions 结合使用

    我使用 azure 函数来托管 React 应用程序的 API 但我也使用相同的 azure 函数来托管应用程序的 html js css 通过 Blob 存储上的静态文件的代理函数 我一直在使用 EasyAuth 为其提供身份验证 效果非
  • 从 javascript 数组中查找匹配的字符串

    我有一组字符串 我需要找到以某个键开头的所有字符串 例如 如果有一个数组 apple ape open soap 当使用键 ap 搜索时 我应该只得到 苹果 和 猿 而不是 肥皂 这是在 JavaScript 中 Use indexOf h
  • 从 GWT 调用 JQuery 函数

    我正在启动一个使用 GWT 的项目 设计团队使用 HTML 和 JQuery 制作了一个原型 我实际上正在使用 UIBinder 来 重建 UI 我的问题是应用程序有一个使用 JQuery 的下拉菜单 但它不起作用 到目前为止 我尝试的是在