簡體   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