开发者社区> 问答> 正文

js点击事件onclick第一次不触发,第二次点击才正常触发

function showContent(obj) {
            $(obj).click(function() {
                $('#Notice').modal({
                    show : true
                });
                var NoticeText = $(obj).parent().find("div").text();
                $('#Notice .modal-body').text(NoticeText);
            })
        }


这是js代码,就是一个简单的点击事件

<c:forEach items="${Noticelist}" var="item">
 <li >${item.noticeTitle}
 <span style="margin-left: 15px">${item.pubTime}</span>
 <div style="display: none">${item.noticeContent}</div>
 <a href="javascript:void(0)" onclick="showContent(this)">查看详情</a>
 </li>
 </c:forEach>

这是对应的html代码,目前的情况是,刷新页面后第一次单击不触发这个点击事件,第二次单击时就正常触发了,很影响体验,js比较弱,不明白为什么会出现这种情况

展开
收起
a123456678 2016-07-13 17:17:28 14966 0
1 条回答
写回答
取消 提交回答
  • 因为你第一次点击的时候是为a标签绑定了一个click事件,这个click要到第二次点击才生效。
    如果是动态绑定事件,可以用jquery的on方法。
    给a标签增加一个名为‘showModel’的class,然后用on方法就行。我习惯这样写:

    <c:forEach items="${Noticelist}" var="item">
     <li >${item.noticeTitle}
     <span style="margin-left: 15px">${item.pubTime}</span>
     <div style="display: none">${item.noticeContent}</div>
     <a class="showModel" href="javascript:void(0)">查看详情</a>
     </li>
     </c:forEach>
    
    $('body').on('click','.showModel',function(){
        $('#Notice').modal({
            show : true
        });
        var NoticeText = $(this).parent().find("div").text();
        $('#Notice .modal-body').text(NoticeText);    
    })
    2019-07-17 19:55:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载