-1

更新... 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 更新

我使用 Masonry-Isotope 作为语言词典界面,其中瓷砖是第一层单词定义。简单例如:tile-a 是单词“test”,同义词链接“exam”。单击考试会在角戳中加载新定义(div float:right)=“评估[链接]技能[/链接]的一组问题”。

单击子链接“技能”使用与顶级链接“考试”相同的类触发器,但是......它无法加载。

此处示例:http ://www.buddhamind.info/br/innerLink.htm

代码:

<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>

两个问题:它可以工作吗?什么会让它发挥作用?

我希望这一切都有意义。

4

1 回答 1

0

要在以编程方式加载的事物(.load例如)上绑定 jQuery 事件,请使用.on(),如答案中所述。所以在你的情况下:

$(document).on("click", ".setStamp", function(){ ... });

更新

如果我理解正确,则未添加.setStamp该类的类将与该函数一起加载。如果我理解正确,我认为没有在该元素上运行,因为尚未完成加载内容。但是,您可以将代码放在 的-function 中,如下所示:fake.load()$('.setStamp').addClass('fake');$("#stamp").load( ... );.addClass()complete.load()

$("#stamp").load($('#'+$(this).attr("id")).html()+'.htm', function(){
   $('.setStamp').addClass('fake');
});

如果 之后的其他代码.addClass('fake')也适用于从 加载的内容.load(),我强烈建议您也放置complete-function。如果你不这样做,如果连接速度非常快(比如在本地运行),它可能会加载一些时间,但是在线或如果用户的 ping 不正确,加载可能需要更长的时间。

于 2013-08-26T22:29:07.923 回答