更新...... 29.8.13 在
$(document).on("click", ".setStamp", function ()
工作正常。
在测试中,我发现该点击块中的一个动作
$('.setStamp').addClass('fake');
不再有效。这个'假'类是一个简单的切换覆盖使用...
if ($('.setStamp').is('.fake')) { resize-elements; $('.setStamp').removeClass('fake'); }
else { $(this).toggleClass('large'); $container.isotope('reLayout'); }
如果我使用以下方式设置:
$(".arrow_in").click(function () { $('.setStamp').addClass('fake'); }
很好。 评论
_ _ _end Update
我使用Masonry-Isotope作为语言词典界面,其中tile是第一层词定义。简单例如:tile-a是带有同义词链接'exam'的'test'一词。单击检查会在角标记中加载新定义(div float:right)=“评估[link]技能[/ link]的一组问题”。
点击子链接“技能”使用与顶级链接“考试”相同的类触发器,但是......无法加载。
此处示例:http://www.buddhamind.info/br/innerLink.htm
CODE:
<link rel="stylesheet" href="style.css" />
<script src="jquery.min.js"></script>
<script src="jquery.isotope.min.js"></script>
<div id="container" class="clickable clearfix">
<div id="stamp" class="corner-stamp"><BR><center>tile<BR>
<span style='background-color:black;color:white;cursor:pointer'> link </span>
<BR>data<BR><BR>seen<BR>here</center></div>
<div class="element a" data-pali="Janaka-kamma" data-category="a">
<div class="number">180</div>
<div class="name"><button id=LINK class=setStamp>LINK</button></div>
</div>
</div>
<script>
$(".setStamp").click(function () { // click tile links..... MANY of these
$("#stamp").load($('#'+$(this).attr("id")).html()+'.htm'); // load file ID.htm
$('.setStamp').addClass('fake'); // fake class to stop 'large' resize
$('.corner-stamp').removeClass('noStamp'); // show stamp
$('#closeStamp').addClass('stampOn'); // stamp avoided by tiles
$('.corner-stamp').addClass('corner_wide'); // widen stamp
$('.corner-stamp').removeClass('corner_content');
$('.arrow_in').addClass('arrow_vis'); // show arrow_in.png
$('.arrow_out').removeClass('arrow_vis'); // hide arrow_out.png
$container.isotope('reLayout'); });
</script>
两个问题: 可以吗? 什么能使它发挥作用?
我希望这一切都有道理。
答案 0 :(得分:0)
要在以编程方式加载的内容上绑定jQuery事件(例如,使用.load
),请使用.on()
,如this answer中所述。所以在你的情况下:
$(document).on("click", ".setStamp", function(){ ... });
<强>更新强>
如果我理解正确,则.setStamp
函数会加载未添加类fake
的{{1}}。如果我理解正确,我认为.load()
没有在该元素上运行,因为$('.setStamp').addClass('fake');
尚未完成加载内容。但是,您可以将$("#stamp").load( ... );
代码放在.addClass()
的{{1}}函数中,如下所示:
complete
如果.load()
之后的其他代码也适用于从$("#stamp").load($('#'+$(this).attr("id")).html()+'.htm', function(){
$('.setStamp').addClass('fake');
});
加载的内容,我强烈建议您同时使用.addClass('fake')
- 函数。如果你不这样做,如果连接速度非常快(如在本地运行),它可能会加载一些时间,但是在线或者如果用户ping不好,可能需要更长时间才能加载。