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