layui.laytpl 监听点击 事件委托无效

提问 已结 8 511
关心则乱
悬赏:20飞吻
版本:layui 2.5.6 浏览器:谷歌

<script id="view"">
<div class="jieda-reply">
{{# if(item.userId!=userId){ }}
<span type="reply">
<i class="iconfont icon-svgmoban53"></i>
回复
</span>
{{# } }}
</div>
</script>
下面的代码无效
$('.jieda-reply span').on('click', function () {
var othis = $(this);
console.log(othis.parents('li'))
});
回帖
  • VIPArcher
    2020-4-7
    @关心则乱 你执行
    $('.jieda-reply span').on('click', function () {
    var othis = $(this);
    console.log(othis.parents('li'))
    });
    的时候<div class="jieda-reply">节点还没生成所以事件没绑定上去,解决办法要么绑定到上层已存在的节点上去委托,要么在把<div class="jieda-reply"> 添加到dom上之后再执行绑定事件
    0 回复
  • 就算
    <script id="view"">
    里面写纯html 监听依然会失效
    0 回复
  • 你先搞清楚什么是事件委托,$(document).on('click', ''.jieda-reply span', function(){

    });

    你是真的菜鸡,基础知识都不会还做项目
    0 回复
  • 帝王蟹
    2020-4-6
    @小哥哥小姐姐 别这样说很时候新手会犯错
    0 回复
  • @小哥哥小姐姐
    $('document').on('click','.className',function() { });是把事件绑定到document上
    $('.className').on('click',function() { });是把事件绑定到元素上,效率更高
    0 回复
  • @关心则乱 你个辣鸡,你自己都说了是事件委托,你所说的下面那个你认为的效率更高的写法叫事件委托吗?
    0 回复
  • 我给你提供了解决办法你不采纳还说效率不高,你不光技术辣鸡,还是个瞎子
    0 回复
  • 确实是我 没理解到 事件委托
     /* $('.jieda-reply span').on('click', function () {
    var othis = $(this), type = othis.attr('type');
    gather.jiedaActive[type].call(this, othis.parents('li'));
    });*/

    $('body').on('click', '.jieda-reply span', function () {
    var othis = $(this), type = othis.attr('type');
    gather.jiedaActive[type].call(this, othis.parents('li'));
    });
    我只说单纯的不喜欢你说话的方式[微笑]
    0 回复