繁体   English   中英

使用jquery对slideToggle做出反应

[英]react using jquery to slideToggle

我试图通过制作带有可折叠项的菜单来学习一些React。 我正在使用jQuery的slideToggle函数,但无法正常工作。

react代码的相关部分是这样的:

var CollapsableMenuItem = React.createClass({
    toggleDescription: function(el) {
        $(el).slideToggle();
    },
    render: function() {
        return (
            <li>
                <label className='title' 
                       onClick={this.toggleDescription.bind(this)}>
                    {this.props.item.title}
                </label>
                <div className='description'>
                    <label>
                        {this.props.item.body}
                    </label>
                </div>
            </li>
        );
    }
});

尽管我目前正在尝试滑动切换“ this”,但将来需要更改为

$(el).parent().find('.description').slideToggle();

因为这是需要滑动切换的实际元素

绑定“ this [element]”的正确方法是什么,以便jQuery可以对它进行slideToggling?

我目前正在研究这种小提琴 ,其中还有一些您可以忽略的东西。 相关代码在javascript部分的底部

想到的第二个问题:使用jQuery.ready函数将click事件等与react绑定是不好的做法吗?

从理论上讲,我可以将一个jquery文件与每个组件文件及其事件处理程序捆绑在一起。

的背景下this在阵营是不是元素,它的阵营组成部分。 jQuery不了解如何将其用作选择器。

您需要获取要使用jQuery控制的元素的引用。

makeTogglable: function(element) {
  $element = $(element);

  this.toggle = function() {
    $element.slideToggle();
  };
},
render: function() {
  return (
    <li>
      <label onClick={this.toggle}></label>
      <div ref={this.makeTogglable}></div>
    </li>
  );
}

ref属性接受一个回调,该回调将在安装组件时运行。 DOM元素将传递给回调,以便您可以直接使用它。

在这种情况下,我们使用它来创建并公开一个新的this.toggle方法,该方法在元素上调用.slideToggle

最后,我们将新的this.toggle方法传递给要触发切换的元素的onClick处理程序。 在这种情况下,它是<div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM