Javascript jqueryajax为所有div提供相同的结果

Javascript jqueryajax为所有div提供相同的结果,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试能够重命名文件。目前它正在发挥作用,但是, 例如,假设我有: 文件一的名字是“你好”,文件二的名字是“再见”,文件三的名字是“嘿” 我将文件1重命名为“某物”,它会将其重命名,但如果我将文件2重命名为“youarecool”,它会将文件1和文件2重命名为该文件 这是我的javascript,我做错了什么。这是我的名片 下面是每个文件的html <div class="each_file"> <span class="file_icon">&l

我正在尝试能够重命名文件。目前它正在发挥作用,但是, 例如,假设我有:

文件一的名字是“你好”,文件二的名字是“再见”,文件三的名字是“嘿”

我将文件1重命名为“某物”,它会将其重命名,但如果我将文件2重命名为“youarecool”,它会将文件1和文件2重命名为该文件

这是我的javascript,我做错了什么。这是我的名片

下面是每个文件的html

 <div class="each_file">
         <span class="file_icon"><img src="img/file-icon/avi.png" /></span>
         <div class="file_details">
            <div class="file_title"><a class="fnl" href="#">filename</a></div>
               <div class="file_detail_stat">filesize | downloads Downloads | 
                Uploaded on   date</div>
               </div>
           <ul class="file_manage_icons">
               <li><a href="#">
               <span title="Email" class="mail" id="$auth"></span>
               </a></li>
               <li><a href="#"><span title="Edit" class="edit" id="$auth"></span></a></li>
               <li><a href="#"><span title="Lock" class="lock" id="$auth"></span></a></li>
               <li><a href="#"><span title="Delete" class="bin" id="$auth">
               </span></a> </li>
            </ul>
          <div class="clear"></div>
         </div>

文件大小|下载|
上载日期
这就是javascript

$('.edit').click(function(e){

    e.preventDefault();
    var auth = $(this).attr('id');
    var each = $(this).closest('.each_file').find('.fnl');

    $.post( "ajax/edit_filename.php", { auth:auth })
       .done(function( data ) {

        $( "#dialog" ).dialog({
          modal: true,
          resizable: false,
          title: 'Edit file name',
          buttons: {
              "Close": function() {
                  $(this).dialog("destroy");
                  $(this).dialog("close");
              }
          } 
        });
        $('.ui-dialog-content').html('<input type="text" class="newfname" value="'+data+'"/><div class="btn_l"><input type="submit" class="submit_btn" id="edit_filenameb" value="Edit Name" /></div>');
    });

    $(document).on('click', '#edit_filenameb', function(e){
        e.preventDefault();
        var nname = $('.newfname').val();
        console.log(nname);

        if(nname == ''){
            $('.submit_btn').effect('shake');
        } else {
            $.post('ajax/change_filename.php', {nname:nname, auth:auth})
            .done(function(data){
                each.text(data);
                $('#dialog').dialog('close');
            });
        }
    });
});
$('.edit')。单击(函数(e){
e、 预防默认值();
var auth=$(this.attr('id');
var each=$(this).closest('.each_文件').find('.fnl');
$.post(“ajax/edit_filename.php”,{auth:auth})
.完成(功能(数据){
$(“#对话框”)。对话框({
莫代尔:是的,
可调整大小:false,
标题:“编辑文件名”,
按钮:{
“关闭”:函数(){
$(此).dialog(“销毁”);
$(此).dialog(“关闭”);
}
} 
});
$('.ui对话框内容').html('');
});
$(文档)。在('单击','编辑文件名B',函数(e){
e、 预防默认值();
var nname=$('.newfname').val();
console.log(nname);
如果(nname=''){
$('.submit_btn')。效果('shake');
}否则{
$.post('ajax/change_filename.php',{nname:nname,auth:auth})
.完成(功能(数据){
每个文本(数据);
$('dialog')。dialog('close');
});
}
});
});

您必须将内部单击绑定包装起来,因此您必须:

$('.edit').click(function(e){
    e.preventDefault();
    var auth = $(this).attr('id');
    var each = $(this).closest('.each_file').find('.fnl');

    $.post( "ajax/edit_filename.php", { auth:auth })
       .done(function( data ) {

        $( "#dialog" ).dialog({
          modal: true,
          resizable: false,
          title: 'Edit file name',
          buttons: {
              "Close": function() {
                  $(this).dialog("destroy");
                  $(this).dialog("close");
              }
          } 
        });
        $('.ui-dialog-content').html('<input type="text" class="newfname" value="'+data+'"/><div class="btn_l"><input type="submit" class="submit_btn" id="edit_filenameb" value="Edit Name" /></div>');
    });

    //Code from here took to outside
});

//This was taken out from the other click binding
$(document).on('click', '#edit_filenameb', function(e){
    e.preventDefault();
    var nname = $('.newfname').val();
    var auth = ... //Get the auth here
    console.log(nname);

    if(nname == ''){
        $('.submit_btn').effect('shake');
    } else {
        $.post('ajax/change_filename.php', {nname:nname, auth:auth})
        .done(function(data){
            each.text(data);
            $('#dialog').dialog('close');
        });
    }
});
$('.edit')。单击(函数(e){
e、 预防默认值();
var auth=$(this.attr('id');
var each=$(this).closest('.each_文件').find('.fnl');
$.post(“ajax/edit_filename.php”,{auth:auth})
.完成(功能(数据){
$(“#对话框”)。对话框({
莫代尔:是的,
可调整大小:false,
标题:“编辑文件名”,
按钮:{
“关闭”:函数(){
$(此).dialog(“销毁”);
$(此).dialog(“关闭”);
}
} 
});
$('.ui对话框内容').html('');
});
//代码从这里传到外面
});
//这是从另一个单击绑定中取出的
$(文档)。在('单击','编辑文件名B',函数(e){
e、 预防默认值();
var nname=$('.newfname').val();
var auth=…//在此处获取auth
console.log(nname);
如果(nname=''){
$('.submit_btn')。效果('shake');
}否则{
$.post('ajax/change_filename.php',{nname:nname,auth:auth})
.完成(功能(数据){
每个文本(数据);
$('dialog')。dialog('close');
});
}
});

希望这有帮助。干杯

我认为问题在于,每次重命名文件时,都会向
文档
添加一个新的单击侦听器,但您从未清理它。当您重命名下一个函数时,它实际上调用了两个重命名函数。您可以将要重命名的文件的名称保存在变量中,然后在页面加载上设置的单击侦听器中重命名该文件。此外,您还必须有一种方法来判断重命名是否已经发生,这样就不会在每次单击页面时调用它

我想看看你的代码,实际上重命名的文件。我不认为这是php的问题。因为如果我只是重新命名一个文件,它就可以正常工作了。但是如果我重命名一个不同的文件,那么它会将所有文件重命名为相同的..这是JSFIDLE,我尝试添加更多的代码来获得正确的.fnl但是现在它使所有的标题都相同了用于ui.dialog-content HTMLTANKS,是的,我会再玩一次,看看我能想出什么你是正确的,我将$(文档)删除为$('#edit_filenameb')。单击(函数(e){它现在可以工作了。谢谢:D