0

我正在创建一堆s 并使用一个简单的函数div通过引用文件插入缩略图。js基本上我试图将点击处理程序分配给div循环中的每个新的,但可能由于语法原因它不起作用。

这是我的代码(更新)...

function makethumbs() {

    for (var i = 0; i < 14; i++) {

        var backgroundUrl = script_vars + "/images/gallery/thumbs/g" + (i+1) + ".jpg",
            newdiv = $('<div />', {id: 'thumbnail'+i, width: 145, height: 84});
            newdiv.css({display:'inline', 
                        float:'left', 
                        margin:'2px 2px 0 0', 
                        color:'#000', 
                        fontSize:'18px', 
                        zIndex:0,
                        html:'P',
                        background: 'url(' + backgroundUrl + ')'
                       });
            newdiv.click(function() {
                $(this).stop(true, true).fadeTo('slow', 0);
            });

        $('#thumbholder').append(newdiv);
    }

    $('#arrowright').click(function() {
        var L = $('#thumbholder'),
            margL = parseInt(L.css('marginLeft'), 10),
            newMarg = (margL - 147) + 'px',
            anim = {opacity: 1};
            anim["marginLeft"] = newMarg;
        $('#thumbholder').stop(true, true).animate(anim, 400);

    });
}

那里也有一个额外的点击处理程序,#arrowright可以正常工作。不确定它作为可点击箭头的 az 排序div是否在覆盖缩略图的容器内,div如果这有意义的话。

4

2 回答 2

2

为什么不继续使用 jQuery 呢?

function makethumbs() {
    for (var i = 0; i < 14; i++) {

        var backgroundUrl = script_vars + "/images/gallery/thumbs/g" + (i+1) + ".jpg",
            newdiv = $('<div />', {id: 'thumbnail'+i, width: 145, height: 84});
            newdiv.css({display:'inline', 
                        float:'left', 
                        margin:'2px 2px 0 0', 
                        color:'#000', 
                        fontSize:'18px', 
                        zIndex:0,
                        html:'P',
                        background: 'url(' + backgroundUrl + ')'
                       });
            newdiv.click(function() {
                $(this).stop(true, true).fadeTo('slow', 0);
            });

        $('#thumbholder').append(newdiv);
    }

    $('#arrowright').click(function() {
        var L = $('#thumbholder'),
            margL = parseInt(L.css('marginLeft'), 10),
            newMarg = (margL - 147) + 'px',
            anim = {opacity: 1};
            anim["marginLeft"] = newMarg;
        $('#thumbholder').stop(true, true).animate(anim, 400);

    });
}​

因为您的主要问题是尝试将具有 jQuery 语法的单击处理程序附加到本机 JS DOM 元素。

于 2012-12-10T01:21:01.380 回答
0

更改newDiv.click为,$(newDiv).click因为您似乎在使用 jQuery;但是,如果您想继续使用本机 javascript,您可以为元素设置一个事件,如下所示:

newDiv.addEventListener('click',function(){
//you code here
});
于 2012-12-10T01:28:08.983 回答