AJAXを介してjQueryUIタブにロードされるコンテンツを操作しようとしています。ご想像のとおり、これらの要素は「将来の」DOM要素であり、通常の$( "。someClass")関数によって操作されることはありません。
イベント処理に.live()を使用して読んだことがありますが、jQuery 1.7以降を使用することは非推奨になり、新しい.on()メソッドに置き換えられました。
私の問題は、非表示にしたいdivがAJAXタブにロードされるときに、最初のDOMロード後に操作する必要があり、最初はクリックイベントにバインドされないことです。
現在$()でラップされている私の関数は以下のとおりです。
クリックハンドラーを使用するリンクの構文は正しいと思いますが、ロード時に「hiddenStory」divを「.hide()」する正しい方法がわかりません。
また、関数自体を全体的な$()でラップするべきではないと思いますか?
どんな助けやアドバイスも大歓迎です。
$(function(){
// this .hiddenStory div below is what I want to hide on AJAX load
// need syntax and/or new methods for writing this function
$(".hiddenStory").hide();
// this is a function that allows me to toggle a "read more/read less" area
// on the "hiddenStory" div
$(".showMoreOrLess").on('click', (function() {
if (this.className.indexOf('clicked') != -1 ) {
$(this).removeClass('clicked');
$(this).prev().slideUp(500);
$(this).html("Read More" + "<span class='moreUiIcon'></span>");
}
else {
$(this).addClass('clicked');
$(this).prev().slideDown(500);
$(this).html("See Less" + "<span class='lessUiIcon'></span>");
}
}));
});
// prevents default link behavior
// on BBQ history stated tab panes with
// "showMoreOrLess" links
$('.showMoreOrLess').click(function (event)
{
event.preventDefault();
// here you can also do all sort of things
});
// /prevents default behavior on "showMoreOrLess" links