他の投稿を見て、コードに live() と on() を追加しようとしましたが、クリック機能は一度しか機能せず、それ以降は機能しません。誰かが私が間違っていることを指摘できますか。これが私の最新のコードです:
<script language="javascript">
//Used to delete a step from the database after confirming with user
$(document).ready(function(){
$("#success_message2").hide();
$(".delete_it").on('click',function() {
var answer = confirm('Are you sure you want to delete this step?');
if (answer){
var data = {
'hospid': '<? echo $hospid; ?>',
"step_id" : $(this).parent().attr("name")
};
$.post("../php/progress_steps_delete.php",
data,
function (data) {
if (data.success) {
$("#success_message2").show('slow');
setTimeout(function () {
$("#success_message2").hide('slow');
}, 5000);
$('#step_list').html(data.success);
} else {
alert('not done');
$("#non-grid").prepend(data.error);
}
}, "json");
}
});
});
</script>
すみません、htmlはこちら
<body>
<div id="body-wrapper">
<?php include_once(getBasePath()."site_hospital_files/elements/navbar.php"); ?>
<div id="main-content">
<div class="content-box">
<div class="content-box-header">
<h3>Progress Steps</h3>
</div>
<div class="content-box-content">
<div class="msg-status div_message" id="success_message">New step added successfully!</div>
<div class="msg-status div_message" id="success_message1">New List Order Updated!</div>
<div class="msg-status div_message" id="success_message2">Step Deleted!</div>
<div id="non-grid">
<form method="post" name="upload_form" id="upload_form">
<fieldset style="height:100px; margin-left:25px; margin-top:15px; background-color:#FFF;">
<legend style="padding:2px;">Add a Step</legend>
<div class="column-left" style="width:50%;">
<label class="space">Step Name</label>
<input class="text-input tall-input required alnum" type="text" id="step_add" name="step_add" style="width:90%;"/>
</div>
<div class="column-left" style="width:20%; padding-top:25px;">
<input type="hidden" name="hosp" id="hosp" value="<? echo $hospid; ?>"/>
<input type="submit" id="snd_upload" name="snd_upload" value="Submit Step" class='button' />
</div>
</fieldset>
</form>
<form name="delete_form" method="post" id="delete_form">
<fieldset style="height:100%; margin-left:25px; margin-top:15px; background-color:#FFF;">
<legend style="padding:2px;">List of Steps</legend>
<h3>Drag and Drop to Change Step Order</h3>
<input type="hidden" name="hosp" id="hosp" value="<? echo $hospid; ?>"/>
<div id="step_list">
<? echo $step_list ?>
</div>
</fieldset>
</form>
</div>
</div>
</div>
<div class="clear"></div>
<div id="footer">© Copyright 2012 Inc. | <a href="#">Top</a></div>
</div>
</div>
</body>
わかりました、2番目の編集、私はここで問題を理解し始めていると思います. これが私のリストを生成しているphpです。クリックしている要素はコンテナに埋め込まれています。コンテナ全体をクリックするのではなく、内部の画像だけをクリックします。それは可能ですか?これまでのすべてのアドバイスに感謝します。勉強中です....
function getSteps($dbh, $hospid)
{
$sql1 = $dbh->prepare('
SELECT COUNT(*)
FROM progress_steps
WHERE hospital_id = :hospid
');
$sql1->bindValue('hospid', $hospid);
$sql1->execute();
$num_rows = $sql1->fetchcolumn();
$sql = $dbh->prepare('
SELECT *
FROM progress_steps
WHERE hospital_id = :hospid
ORDER BY step_number
');
$sql->bindValue('hospid', $hospid);
$sql->execute();
if ($num_rows > 0) {
$steps_table = '';
$isOdd = true;
while (($row = $sql->fetch(PDO::FETCH_ASSOC)) !== false) {
$steps_table .= "<div class='hover_hand' name='$row[step_id]' id='item_$row[step_id]'><div style='float:left' class='delete_it'><img src='../images/delete_icon.gif'></div> <div style='float:left' class='middle_text'> $row[step_name]</div><input type='hidden' name='itemid[]' value='$row[step_id]'/></div>";
};
} else {
$steps_table = '';
$steps_table .= "<div>You need to add steps.</div>";
};
return $steps_table;
}