【发布时间】:2017-08-11 16:57:01
【问题描述】:
已尝试环顾四周,但被我的一个动态触发器卡住了。
我已经检查了与此相关的其他线程,但似乎有一些其他代码错误可能导致建议的 .on 方法失败。
代码旨在隐藏/显示 2 个单独的 - 有一些初始预渲染的,还有一些之后动态加载的。
预渲染很好,动态渲染失败。
Jquery:
$("div .flipper_link").on("click", function () {
$(this).parent().find(".contain_content").toggle();
$(this).parent().find(".card-tags").toggle();
});
以及动态创建的代码:
<div class="callout_surround">
<div class="callout ct_shop">
<div class='header-global header-shop'>Shop</div>
<div class="flipper_link header-shop"><i class="fi-loop"></i></div>
<div class='contain_content' uid="74" data-popup-open="popup-1">
<img src='images/someimage.jpg' class='img_cont'/>
<div class='tile-text-cont'>
<div class='tile-desc'>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non scelerisque
</div>
</div>
</div>
<div class="card-tags">Some tags etc</div>
</div>
</div>
我是 jQuery 的新手,如果我使用了错误的方法,请道歉!
【问题讨论】:
-
当您是 jquery 新手时,这并不明显,请在此处阅读:stackoverflow.com/questions/203198/…
-
本质上,当你连接一个事件时,它只适用于当时存在的元素——所以如果你添加更多的元素,它们就不会有这个事件。
-
尝试使用
$(document).on("click",".flipper_link", function() -
即使假设你让它工作,你为什么要将点击事件绑定到 div 元素?不会使用鼠标的用户将如何使用您的页面?您应该使用锚元素,以便仅使用键盘的用户可以通过 Tab 键找到它们并用键盘“单击”它们。