我是法国人,所以请原谅一些翻译错误...
我有一个代码,使用 Jquery 和 Ajax 调用,但我不明白以下问题。
我有一张桌子,第一行。在行的末尾,有两个选项:有效和删除。当您单击有效图标时,会出现加载图标,出现新行,追加到表格,加载图标消失,并显示删除图标。
当您单击删除图标时,它会删除该行。
所以我的问题...
一开始,我直接在图标上实现了“onclick=valid()”和“onclick="delete()”。但现在,我发现使用a更干净:
$('#valid'+i).click(function(){
valid(i);
});
$('#delete'+i).click(function(){
delete(i);
});
问题出现了:当您单击时,例如在第 3 行的删除图标上,出现在第 4 行的是加载...
有代码
PHP/HTML
<?php
include_once 'functions_sandbox.php';
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.0.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
//Fonction qui charge les datepicker et les différentes options sur les champs
function reload_jquery(){
$('input[type=text][id*=tags]').each(function() {
i = $(this).attr('num');
$(this).css('border','thin blue solid');
$('#valid'+i).click(function(){
valid_temps(i);
});
$('#delete'+i).click(function(){
delete_temps(i);
});
});
}
function valid_temps(i){
$('#loading'+i).show();
$('#valid'+i).hide();
var variables = 'mode=saisie_temps&j='+$('#j').val();
$.ajax(
{
// Define AJAX properties.
type: "POST",
url: "/dgi/ajax_sandbox.php",
data : variables,
dataType: "html",
timeout: 6000,
// Define the succss method.
success: function(data)
{
$('#data_retour').append(data);
$('#loading'+i).hide();
$('#delete'+i).show();
$('#j').val(parseInt($('#j').val())+1);
reload_jquery();
}
}
);
}
function delete_temps(i){
$('#loading'+i).show();
$('#delete'+i).hide();
$( "#confirm").dialog({
resizable: false,
height:160,
width: 350,
modal: true,
buttons: {
"Oui": function() {
supp_temps(i);
$(this).dialog( "close" );
},
"Non": function() {
$('#loading'+i).hide();
$('#delete'+i).show();
$(this).dialog( "close" );
}
}
});
}
function supp_temps(i){
$('#ligne'+i).hide('slow');
}
$(function(){
reload_jquery();
});
</script>
<table id="data_retour" class="module">
<?php echo ligne_saisie_sandbox(0); ?>
</table>
<div style="display:none" id="confirm" title="Confirmation">Voulez-vous vraiment supprimer ce temps ?</div>
<label>Indice J : </label>
<input type="text" value="1" id="j" name="j" />
</body>
</html>
“functions_sandbox.php”中的“ligne_saisie_sandbox”函数
function ligne_saisie_sandbox($j){
$retour = '
<tr id="ligne'.$j.'">
<td class="cellule _light">
<label>Attraction'.$j.' : </label>
<input type="text" id="tags'.$j.'" num="'.$j.'" />
<img src="/dgi/img/b_save.png" alt="Valid" title="Valider votre temps" title="Valider le temps" id="valid'.$j.'" style="margin-top:5px;float:right">
<img src="/dgi/img/b_empty.png" alt="Supprimer" title="Supprimer votre temps" title="Supprimer le temps" id="delete'.$j.'" style="margin-top:5px;float:right;display:none">
<img src="/dgi/img/ajax_clock_small.gif" alt="Load" id="loading'.$j.'" style="margin-top:5px;float:right;display:none;" />
</td>
</tr>';
return $retour;
}
和“ajax_sandbox.php”中的 Ajax
include_once 'functions_sandbox.php';
switch ($_POST['mode'])
{
case "saisie_temps":
$j = $_POST['j'];
$retour = ligne_saisie_sandbox($j);
echo $retour;
break;
}
一张小图来说明问题