jquery load()。html - 工作但内部链接没有(重新)加载

时间:2013-08-26 22:21:14

标签: jquery jquery-isotope

更新...... 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'>&nbsp;link&nbsp;</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>

两个问题: 可以吗? 什么能使它发挥作用?

我希望这一切都有道理。

1 个答案:

答案 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不好,可能需要更长时间才能加载。