EDIT:コードを少しきれいにして問題を絞りました。jQuery slideDownは動的に割り当てられたIDを持つ要素では機能しません
私はWordpressサイトで作業しています。携帯のメニューにドロップダウンを組み込もうとしています。つまり、既存の要素にクラスとIDを割り当てるためにjQueryを使用する必要があります。私はこのコードが既にpremade HTMLで動作しますが、動的に作成されたIDで失敗します。ここで
コードです:
...
var menuCount = 0;
var contentCount = 0;
//find the mobile menu items
var submenus = $('[title="submenu"]');
if (submenus.length && submenus.parent('.fusion-mobile-nav-item')) {
console.log(submenus);
submenus.addClass('dropdown-title').append('<i id="dropdown-angle" class="fa fa-angle-down" aria-hidden="true"></i>');
submenus.each(function() {
$(this).attr("href", "#m" + menuCount++);
})
var content = submenus.parent().find('ul.sub-menu');
content.addClass('dropdown-content');
content.each(function() {
$(this).attr("id", "m" + contentCount++);
})
}
$(document).on('click', '.dropdown-title', function(e) {
var currentAttrValue = $(this).attr('href');
if ($(e.target).is('.d-active') || $(e.target).parent('.dropdown-title').is('.d-active')) {
$(this).removeClass('d-active');
$(currentAttrValue).slideUp(300).removeClass('d-open');
} else {
$('.dropdown-title').removeClass('d-active');
$('.dropdown-content').slideUp(300).removeClass('d-open');
$(this).addClass('d-active');
console.log($(currentAttrValue));
//THIS LINE FAILS
$(currentAttrValue).slideDown(300).addClass('d-open');
}
e.preventDefault();
});
私は$(document).on(...)
を使用して、クラスdropdown-title
を持つ要素を登録しましたが、私は、カスタムID年代に要素を登録するために何をする必要があるかを把握することはできません。私はイベントコールバックを.each
の関数の中に入れようとしましたが、私はトリガするカスタムイベントを作ろうとしましたが、それらのどれもが2番目のコード行をトリガすることはありません。そこコンソールにはエラーはません、と私は、この取得セレクタログイン慰めるとき:
[UL#m0.sub-menu.dropdownコンテンツ、コンテキスト:ドキュメント、セレクタ: "#1 M0"] を: UL#1 m0.sub-menu.dropdownコンテンツ コンテキスト: 文書 長さ: 1セレクタ : "#1 M0" プロト : オブジェクト[0]
jQueryはその要素があることを知っていますが、登録方法を理解できません。あるいは、私が考えていないことかもしれません。わかりません。
私に例を教えてください。私は上手く理解できていない気がします。私はコンテンツをクリックできるようにしたくない。タイトルだけ。 –
はい、ドロップダウンコンテンツのCSSに 'display:none'を追加して非表示にしてから、jQueryアニメーションが残ります。私が混乱させているのは、アニメーションを取り出しても、要素にd-openクラスを追加することさえできないからです。 –