首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何让React侦听Jquery中调用的单击事件

如何让React侦听Jquery中调用的单击事件
EN

Stack Overflow用户
提问于 2019-05-06 21:40:57
回答 1查看 229关注 0票数 2

我在一个react应用中使用dabeng/OrgChart。当用户单击一个节点时,Jquery会填充一个输入框。here就是一个这样的例子。

我希望react这样做,而不是Jquery,这样我就可以保存状态中的选定节点,而不是保存值的输入框。

我尝试过使用引用之类的方法,尝试在jquery函数中调用react方法,但没有成功。

也许publisher/subscriber model就是解决方案,但不确定如何实现这样的东西。

代码语言:javascript
运行
AI代码解释
复制
class OrgTreeBase extends Component {
    state = {
        list: {
            'name': 'Ball game',
            'children': [
                {
                    'name': 'Football',
                    'children': [
                        {
                            'name': 'man united',
                            'children': [
                                { 'name': 'fred' },
                                { 'name': 'ander herrera' },
                                { 'name': 'scott mctominay' },
                            ]
                        }
                    ]
                },
                {
                    'name': 'Basketball',
                    'children': [
                        {'name': 'lakers'},
                        { 'name': 'warriors' },

                    ]
                },
                { 'name': 'Volleyball' }
            ]
        },
        currentLevel: 0,
        currentItem: [],
        selectedItem: '',
    };

    componentDidMount() {
        this.$el = $(this.el);
        let datasource = this.state.list;

        this.getId = () => {
            return (new Date().getTime()) * 1000 + Math.floor(Math.random() * 1001);
        }

        //creates the initial chart with the following settings
        var oc = $('#chart-container').orgchart({
            'data': datasource,
            'chartClass': 'edit-state',
            'exportButton': true,
            'exportFilename': this.state.name,
            'parentNodeSymbol': 'fa-th-large',
            'createNode': function ($node, data) {
                $node[0].id = this.getId;
            },
        })

        //when node is selected
        oc.$chartContainer.on('click', '.node', function () {
            var $this = $(this);
            console.log("this is : " + $this.find('.title').text());
            $('#selected-node').val($this.find('.title').text()).data('node', $this);
        });

...

    onNodeSelected = (node) => {
        console.log(node + " was selected");
    }

我希望在单击节点时调用this.onNodeSelected()。

代码语言:javascript
运行
AI代码解释
复制
    onNodeSelected = (node) => {
        console.log(node + " was selected");
    }

提前感谢你在这方面给我的任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 23:04:40

我想你已经承诺在这个库中使用jQuery了。所以我不明白为什么你不能这样做,比如说:

代码语言:javascript
运行
AI代码解释
复制
    //somewhere above
    const self = this;

    //when node is selected
    oc.$chartContainer.on('click', '.node', function () {
        var $this = $(this);
        console.log("this is : " + $this.find('.title').text());
        $('#selected-node').val($this.find('.title').text()).data('node', $this);

        //set state and save node here on click. Or the node's text value 
        self.setState({})
    });

因为这不在您的要求之内,所以我建议这样做的原因是因为DOM似乎是由orgChart库生成的,向其中添加react侦听器是困难的。而且,没有任何理由不能在jQuery单击函数中调用react setState。

如果我在没有补充警告的情况下提出这一点,那也是错误的,因为jQuery和React都是非常大的库,做的事情很相似。你可能已经知道了,但是,我仍然想建议你找到一个不同的组织库,或者用React制作你自己的组织库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56012775

复制
相关文章
jQuery 双击事件(dblclick)时,不触发单击事件(click)
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。 先看一下点击事件的执行顺序:
飞奔去旅行
2019/06/13
5.4K0
Android Button 单击事件
方法一:在XML文件中指定 单击事件函数 <Button             android:id="@+id/button1"             android:layout_width="120dip"             android:layout_height="wrap_content"             android:layout_alignParentLeft="true"             android:layout_below="@+id/textView1
磊哥
2018/05/08
1.8K0
jQuery:详解jQuery中的事件(一)
之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源。后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代码,但是自觉还差的好远,跟好多大神(比如阮一峰)的理解还是有很大差距。现在就一点一点积累自己的知识体系,记录自己学到的和自己所理解的jQuery。
王金龙
2019/02/25
1.7K0
双击事件与单击事件的那些事
合情合理,双击事件也是两次点击事件,所以同时会触发单击事件click和双击事件dblclick。但是需求是单击和双击不同的处理,所以双击的时候不应该触发单击事件。
赤蓝紫
2023/03/16
3.8K0
双击事件与单击事件的那些事
jQuery:详解jQuery中的事件(二)
  上一篇讲到jQuery中的事件,深入学习了加载DOM和事件绑定的相关知识,这篇主要深入讨论jQuery事件中的合成事件、事件冒泡和事件移除等内容。
王金龙
2019/02/25
2.3K0
weex-08-单击事件
本节任务 学会组件添加单击事件 标准格式 <text v-on:click="方法名称">点我啊</text> 省略格式 <text @click="方法名称">点我啊</text> 下面我们创建
酷走天涯
2018/09/14
1.7K0
weex-08-单击事件
如何处理 React 中的 onScroll 事件?
在 React 应用中,我们经常需要处理滚动事件(onScroll),以实现一些与滚动相关的功能,如无限滚动加载、滚动到顶部按钮等。本文将详细介绍如何处理 React 中的 onScroll 事件,并提供示例代码帮助你理解和应用这个功能。
网络技术联盟站
2023/06/07
3.8K0
VC中CTreeContrl实现响应单击或双击事件
首先需要重写CtreeContrl,然后在.h中添加 afx_msg void OnDblClkTree(NMHDR* pNMHDR, LRESULT* pResult);//双击事件 afx_msg void OnClkTree(NMHDR* pNMHDR, LRESULT* pResult);//单击事件 .h文件 #pragma once ///////////////////////////////////////////////////////////////////////////// //
acoolgiser
2019/01/17
1.9K0
react中的事件绑定
React中的事件绑定是将事件处理函数与组件的交互操作关联起来的过程。通过事件绑定,我们可以在React组件中响应用户的交互,并进行相应的操作。
堕落飞鸟
2023/05/19
3.1K0
程序化的事件侦听器
也就是说,在其中一个页面中我们使用uni.on或者uni.once,在另一个页面中就可以使用uni.emit进行调用,前提是uni,on或者uni.
阿超
2022/08/17
1.4K0
程序化的事件侦听器
在React 中如何处理事件?
在 React 中处理事件有几种常见的方式,具体取决于你使用的是类组件还是函数组件。
王小婷
2023/10/08
2320
React基础(7)-React中的事件处理
props与state都是用于组件存储数据的一js对象,前者是对外暴露数据接口,后者是对内组件的状态,它们决定了UI界面显示形态,而若想要用户与界面有些交互动作
itclanCoder
2019/12/10
8.5K0
React基础(7)-React中的事件处理
React学习(七)-React中的事件处理
props与state都是用于组件存储数据的一js对象,前者是对外暴露数据接口,后者是对内组件的状态,它们决定了UI界面显示形态,而若想要用户与界面有些交互动作
itclanCoder
2020/10/28
7.4K0
React学习(七)-React中的事件处理
JQuery中事件是否发生的判断
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/52916004
大黄大黄大黄
2018/09/14
1.5K0
react中的事件处理(一)
React中的事件绑定采用了类似于HTML中的方式,但有一些语法上的差异。我们可以在组件中定义事件处理函数,并将其绑定到特定的事件上。
堕落飞鸟
2023/05/19
7410
React中的合成事件
React自己实现了一套高效的事件注册、存储、分发和重用逻辑,在DOM事件体系基础上做了很大改进,减少了内存消耗,简化了事件逻辑,并最大程度地解决了IE等浏览器的不兼容问题。
WindRunnerMax
2021/01/26
2.3K0
react中的事件处理(二)
在React中,事件处理函数通常会与组件的状态(state)进行交互。我们可以通过更新状态来响应事件的发生。
堕落飞鸟
2023/05/19
8530
HarmonyOS实战—实现单击事件流程
1. 什么是事件? 事件就是可以被识别的操作 。就是可以被文本、按钮、图片等组件识别的操作。 常见的事件有:单击、双击、长按、还有触摸事件 。 可以给文本、按钮等添加不同的事件。比如添加了单击事件之后
兮动人
2021/08/20
1.5K0
JavaScript 技巧篇-js增加延迟时间解决单击双击事件冲突,双击事件触发单击事件
js 的单双击事件同时存在会有一个问题:双击事件会同时触发单击事件,两个事件存在冲突。 我们加一个延迟时间就能很好的解决这个问题。
小蓝枣
2020/09/23
6.2K0
jquery中各个事件应用实例
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>jquery_shijian_function.html</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){
闵开慧
2018/03/30
6930

相似问题

JQUERY侦听单击事件

10

jQuery单击keyup事件侦听器中的事件侦听器

23

在jquery中单击事件侦听器

11

如何让单击事件侦听器不那么具体?

11

Jquery侦听单击事件和类更改

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档