-3

我正在开发一个网站,我在其中创建了一个使用 plupload 脚本上传多个图像的选项。当我们点击一​​张图片上传多张图片时,它允许我们触发一个弹出窗口。

此脚本需要添加一个 JS 文件,该文件具有以下代码开头的功能:

$(document).ready(function(){
var baseurl = $('#baseurl').val();
var i = 0;
$('.uploadFiles_one').click(function(){

   $('#uploadBox_one').dialog('open');
    return false
})
....
..some more js code..
....
})

现在我已经修改了这个 JS 文件,这样我就可以将同一个 JS 文件用于我通过 PHP 循环生成的多个 DOM 元素,新脚本的代码如下:

$( document ).on( "click", ".uploadFiles_loop", function(){
var baseurl = $('#baseurl').val();
var i = 0;
var my_id = $(this).attr('id');
var cnt = my_id.replace("anchor_", "");

$('.uploadFiles_loop').click(function(){

   $('#uploadBox_'+cnt).dialog('open');
    return false;
});
....
..some more js code..
....
})

当任何用户单击图像时,前端将有一个图像,它将打开一个弹出窗口。但是现在当我修改脚本时,我必须在图像上单击两次才能获得弹出窗口。但在那之后,所有其余的图像上传器图标都只需单击即可打开。

所以我的问题是为什么我必须第一次点击任何“上传图片”两次(我的意思是当页面加载时)。

4

2 回答 2

4

尝试删除这个额外的点击处理程序$('.uploadFiles_loop').click(function(){......});

离开:

$( document ).on( "click", ".uploadFiles_loop", function(){
    var baseurl = $('#baseurl').val();
    var i = 0;
    var my_id = $(this).attr('id');
    var cnt = my_id.replace("anchor_", "");
    $('#uploadBox_'+cnt).dialog('open');
    // Recheck were you want this return false;
    return false; 
....
..some more js code..
....
})

在您的代码中,您有一个侦听器,在点击时运行一个添加了点击侦听器的函数。所以只有第二次点击它会运行代码$('#uploadBox_'+cnt).dialog('open'); return false;。如果您删除它,它将在第一次单击时运行。

Ps - 在你的代码上你有一个return false;,如果你有更多的代码之后它就不起作用了。所以我评论了它,你可能会在你拥有其他代码之后想要它。

于 2013-08-06T12:34:21.303 回答
2
$(document).ready(function(){
    $( document ).on( "click", ".uploadFiles_loop", function(){
        var baseurl = $('#baseurl').val();
        var i = 0;
        var my_id = $(this).attr('id');
        var cnt = my_id.replace("anchor_", "");

        $('#uploadBox_'+cnt).dialog('open');
        return false;


    });
    ....
    ..some more js code..
    ....
});

非常不清楚您要实际完成什么,但是,您需要将单击时想要发生的操作直接放入on函数中。不要将其包装在另一个单击功能中

于 2013-08-06T12:39:37.737 回答