使用jquery对slideToggle做出反应
我正在尝试通过制作带有可折叠项目的菜单来学习一些React。 我正在使用jQuery作为其slideTogglefunction,但我无法让它正常工作。
反应代码的相关部分是这样的:
var CollapsableMenuItem = React.createClass({ toggleDescription: function(el) { $(el).slideToggle(); }, render: function() { return ( ); } });
虽然我目前正试图滑动切换“这个”,这将需要在未来改变
$(el).parent().find('.description').slideToggle();
因为这是需要滑动切换的实际元素
什么是正确的绑定“this [element]”的方式,所以jQuery可以对它进行slideToggling吗?
我正在努力摆脱这个小提琴 ,你可以忽略其他一些东西。 相关代码位于javascript部分的底部
第二个问题浮现在脑海中:使用jQuery.ready函数来绑定点击事件等是不是很糟糕?
从理论上讲,我可以将每个组件文件的jquery文件与其事件处理程序捆绑在一起。
React中的this
上下文不是元素,它是React组件。 jQuery不了解如何将它用作选择器。
您需要使用jQuery获取要控制的元素的引用。
makeTogglable: function(element) { $element = $(element); this.toggle = function() { $element.slideToggle(); }; }, render: function() { return ( ); }
ref prop进行回调,该回调将在安装组件时运行。 DOM元素将被传递给回调,以便您可以直接使用它。
在这种情况下,我们使用它来创建和公开一个新的this.toggle
方法,该方法在元素上调用.slideToggle
。
最后,我们将新的this.toggle
方法传递给我们想要触发切换的元素的onClick
处理程序。 在这种情况下,它是
。