次のような英数字のIDを持つ多くの要素で構成されるページがあります。
<li class="entry" id="sjDDulC8wt">
<img src="sjDDulC8wt.jpg" />
<div class="entry_actions">
<ul class="entry_actions">
<li class='share_it'><a href='javascript:' target='_self'
title='Share It' class='share_it'>o</a>
</li>
</ul>
<div class="share_options_container"style="display:none;">
<ul>
<li><a href="#" class="facebook">F</a></li>
<li><a href="#" class="twitter">T</a></li>
<li><a href="#" class="pinterest">X</a></li>
</ul>
</div>
</div>
</li>
entry_actionsリストの下にあるアンカータグをクリックすると、share_options divが表示され、マウスを外すと、次のスクリプトに従って再び消えます。
$(".share_it a").click(function(){
$(this).closest(".entry").find(".share_options_container").show();
})
$(".share_options_container").mouseleave(function(){
$(this).hide();
})
また、ユーザーがページの下部にアクセスしたときにこれらのアイテムをさらに読み込む無限スクロール機能もあります。
var vloaded = <?php echo $i; ?>; //number of items loaded so far
var vfilter = "<?php echo $filter; ?>"; //how I am filtering them
$(document).ready()
{
$(window).on('scroll', function ()
{
var height = $(window).height();
var scrollTop = $(window).scrollTop();
var dHeight = getDocHeight();
if( height + scrollTop >= dHeight - 10)
{
$.ajax
(
{
type: "POST",
url: "/organizer/getMore",
data: { filter: vfilter, loaded: vloaded },
dataType: "html",
success: function( responseText, textStatus, XHR )
{
// select the element with the ID grid and insert the HTML
$( "#grid" ).append( responseText );
}
}
);
// global variable
vloaded +=30;
} // if
}
); // on
} // ready
何らかの理由で、最初にロードされたアイテムに対して表示/非表示は完全に正常に機能しますが、ajax呼び出しによってロードされたアイテムをクリックしても何も起こりません。私の知る限り、クリックイベントはトリガーされていませんが、理由はわかりません。