Динамически добавляемый раскрывающийся список, не применяющий jQuery

#javascript #jquery #reactjs #dynamic #dropdown

Вопрос:

Я использую bootstrap и jquery в своем проекте react. У меня есть кнопка, при нажатии на которую должно измениться выпадающее поле. Выпадающий список работает, если я ставлю его нормально, но как только я вызываю его динамически, он больше не работает. Вот мой код:

Когда я использую его вот так, он работает

 <div className="profile-otr">
                  <a className="profile-inr click-open3">
                    <img
                      className="creator"
                      src="../assets/img/favicon-32.png"
                      alt="creator"
                    />
                    <p className="price body-sb">{ellipseAddress(address)}</p>
                  </a>
                  <div className="icon-hover-2 click-event3">
                    <h5 className="heading heading-h5">The Lucky Being</h5>
                    <div className="copy-icon-otr">
                      <p className="desc body-s">{ellipseAddress(address)}</p>
                      <svg
                        className="copy-icon"
                        width="18"
                        height="18"
                        fill="none"
                        xmlns="http://www.w3.org/2000/svg"
                      >
                        <path
                          d="M12.636 12.636H15a2 2 0 002-2V3a2 2 0 00-2-2H7.364a2 2 0 00-2 2v2.364"
                          stroke="#CFCFCF"
                          stroke-width="2"
                          stroke-linecap="round"
                          stroke-linejoin="round"
                        />
                        <path
                          d="M10.636 5.364H3a2 2 0 00-2 2V15a2 2 0 002 2h7.636a2 2 0 002-2V7.364a2 2 0 00-2-2z"
                          stroke="#CFCFCF"
                          stroke-width="2"
                          stroke-linecap="round"
                          stroke-linejoin="round"
                        />
                      </svg>
                    </div>
                    <div className="box-otr">
                      <div className="img-otr">
                        <img
                          className="img-eht"
                          src="../assets/img/ethereum.png"
                          alt="img"
                        />
                      </div>
                      <div className="price-otr">
                        <p className="desc body-s">Current Balance</p>
                        <h5 className="heading heading-h5">3.067 ETH</h5>
                      </div>
                    </div>
                    <ul className="link-profile-otr">
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          My Profile
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          My Items
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          Manage Funds
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          Disconnect
                        </a>
                      </li>
                    </ul>
                  </div>
                </div>
 

Но когда я устанавливаю условный оператор, как это, Он больше не работает

 {!address ? (
                <div className="action-otr">
                  <a onClick={connect} className="btn-fill btn-wallet">
                    Connect Wallet
                  </a>
                </div>
              ) : (
                <div className="profile-otr">
                  <a className="profile-inr click-open3">
                    <img
                      className="creator"
                      src="../assets/img/favicon-32.png"
                      alt="creator"
                    />
                    <p className="price body-sb">{ellipseAddress(address)}</p>
                  </a>
                  <div className="icon-hover-2 click-event3">
                    <h5 className="heading heading-h5">The Lucky Being</h5>
                    <div className="copy-icon-otr">
                      <p className="desc body-s">{ellipseAddress(address)}</p>
                      <svg
                        className="copy-icon"
                        width="18"
                        height="18"
                        fill="none"
                        xmlns="http://www.w3.org/2000/svg"
                      >
                        <path
                          d="M12.636 12.636H15a2 2 0 002-2V3a2 2 0 00-2-2H7.364a2 2 0 00-2 2v2.364"
                          stroke="#CFCFCF"
                          stroke-width="2"
                          stroke-linecap="round"
                          stroke-linejoin="round"
                        />
                        <path
                          d="M10.636 5.364H3a2 2 0 00-2 2V15a2 2 0 002 2h7.636a2 2 0 002-2V7.364a2 2 0 00-2-2z"
                          stroke="#CFCFCF"
                          stroke-width="2"
                          stroke-linecap="round"
                          stroke-linejoin="round"
                        />
                      </svg>
                    </div>
                    <div className="box-otr">
                      <div className="img-otr">
                        <img
                          className="img-eht"
                          src="../assets/img/ethereum.png"
                          alt="img"
                        />
                      </div>
                      <div className="price-otr">
                        <p className="desc body-s">Current Balance</p>
                        <h5 className="heading heading-h5">3.067 ETH</h5>
                      </div>
                    </div>
                    <ul className="link-profile-otr">
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          My Profile
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          My Items
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          Manage Funds
                        </a>
                      </li>
                      <li className="link-profile-inr">
                        <span className="circle-hover"></span>
                        <a href="#" className="profile body-sb">
                          Disconnect
                        </a>
                      </li>
                    </ul>
                  </div>
                </div>
              )}
 

Это мой код jQuery:

 $(document).ready(function () {
  $(".click-open3").click(function () {
    $(".click-event3").toggleClass("displayblock");
    $(".click-event2").removeClass("displayblock");
    $(".click-event1").removeClass("displayblock");
  });
  $(".click-open2").click(function () {
    $(".click-event2").toggleClass("displayblock");
    $(".click-event3").removeClass("displayblock");
    $(".click-event1").removeClass("displayblock");
  });
  $(".click-open1").click(function () {
    $(".click-event1").toggleClass("displayblock");
    $(".click-event2").removeClass("displayblock");
    $(".click-event3").removeClass("displayblock");
  });
  $(".burger-click").click(function () {
    $(".click-event1").removeClass("displayblock");
    $(".click-event2").removeClass("displayblock");
    $(".click-event3").removeClass("displayblock");
  });
});
 

Я искал в Интернете и читал разные статьи и решения для переполнения стека, но, похоже, ни одно из них не работает, и мне нужна помощь, пожалуйста.

Комментарии:

1. поиск «как добавлять события в динамически добавляемые элементы»

2. кроме того, этот код будет намного чище

3. @MuhammadUsman Я уже искал это, и как вы имеете в виду очиститель?

Ответ №1:

Вы можете использовать fadeToggle jQuery вместо переключения class

     $("[class^='.click-'], .burger-click").click(function() {
        $(YOUR_ELEMENT).fadeToggle();
    });