首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用onClick事件

调用onClick事件
EN

Stack Overflow用户
提问于 2013-04-11 02:17:56
回答 2查看 89关注 0票数 0

我的代码有问题,让我先粘贴我的代码,大部分都不重要,只是上下文。

代码语言:javascript
复制
                $("#navbar > a").click(function(event) {
                $('#controls').show();
                var currentNum = parseInt($(this).attr('class'), 10);
                document.getElementById('pNum').innerHTML = "pg. " + (currentNum + 1);
                event.preventDefault();

                var t2 = ($(this).attr('id')).split("#");
                var $tr = $(zip.file(localStorage.selected + "/" + t2[0]).asText());
                document.getElementById('main').innerHTML = "";
                $('#main').append($tr);
                document.getElementById(t2[1]).scrollIntoView()
                current = ($(this).attr('class'));
                $(function() {
                    $("#main img").each(function() {
                        var imgPath = localStorage.selected + "/" + $(this).attr('src');
                        var imageData = zip.file(imgPath).asBinary();
                        $(this).attr('src', 'data:image/jpeg;base64,' + btoa(imageData)); 
                    });

                });

                $("#main a").click(function(event){
                    event.preventDefault();
                    var elems = ($(this).attr('href')).split("#");
                    var $path = $(zip.file(localStorage.selected + "/" + elems[0]).asText());
                    document.getElementById('main').innerHTML = "";
                    $('#main').append($path);
                });
            });

现在底部的click事件只有当我把它放在创建内容的代码中时才能工作,这不应该是这种情况,第二,它只工作一次,在我第一次调用它拒绝工作后,有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-11 02:19:54

听起来你想用event delegation代替。例如:

代码语言:javascript
复制
$(document).on('click', '#main a', function(event){
    event.preventDefault();
    var elems = ($(this).attr('href')).split("#");
    var $path = $(zip.file(localStorage.selected + "/" + elems[0]).asText());
    document.getElementById('main').innerHTML = "";
    $('#main').append($path);
});

问题在于,$('#main a').click(...)方法要求在绑定单击处理程序时页面上已经存在#main a元素。

事件委派允许您监听文档(或任何其他始终存在的元素)上的单击事件,并查看该事件是否源自#main a元素。这让你可以动态地添加/删除元素,而不用担心哪些元素已经绑定或还没有绑定点击处理程序。

票数 4
EN

Stack Overflow用户

发布于 2013-04-11 02:23:20

我以前遇到过这个问题,你试过用这个吗?:

代码语言:javascript
复制
$("<element id>").on( 'click', this, function ()
{
      // Your code here
}

参考:http://api.jquery.com/on/

编辑*抱歉之前没有看到答案(在上面的答案中有更好的解释)-但我会保留我的作为参考。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15933400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档