[英]Can't bind event to dynamically created element
我在editstaff.php中具有以下html結構:
<div id="result" style="display:none">This is result div</div>
<form id="adres" onsubmit="return submitForm();">
<input type="hidden" name="type" value="adrs" />
<input type="submit" value="Address" /></form>
並以內聯樣式:
#result{
position: absolute;
border: 5px solid gray;
padding: 10px;
background: white;
width: 270px;
height: 190px;
}
這個html頁面的作用是,單擊“ adres”形式的“地址”按鈕,一些帖子數據被發送到另一個php頁面,該頁面在諸如div(其樣式為display:none)之類的彈出窗口中顯示基於已發送數據的信息fadeIn來自顯示:無。 用於此目的的javascript / jquery代碼如下:
<script>
function submitForm(){
var data=$("#adres").serializeArray();
/* alert(data); */
data.push(
{
name:'sname',value:$("#title").val()
}
);
$.post("geteditdata.php",data,
function(data){
$("#result").html(data);
positionPopup();
$("#result").fadeIn(1000);
}
)
return false;
}
function positionPopup(){
$("#result").css({
left: ($(window).width() - $('#result').width()) / 2,
top: ($(window).width() - $('#result').width()) / 2,
position:'absolute'
});
}
$("#divclose").live('click',function(){
$("#result").fadeOut(500);
});
</script>
即editstaff.php中帶有已獲取數據的div會像以下結構一樣彈出:
<div id="result">
some_value
<a href="#" id="divclose">Close</a>
</div>
到現在為止,所有事情都在進行。 但是,當我單擊彈出div上的“關閉”鏈接時,div沒有用$(“#divclose”)。(click(function())關閉(fadeOut)
為什么在這種情況下不發生這種情況? 有人可以為我提供解決方案嗎? 我正在提供一個演示頁面,您可以在其中實際看到問題。
當我使用jQuery 1.3版時,我使用了$(“#divclose”)。live方法而不是$(selector).on方法。 任何幫助將不勝感激。
在geteditdata.php中,只有以下代碼:
<?php
echo $_POST['sname'];
?>
<br /><br /><a href="#" id="divclose">Close Here</a>
您使用的是舊版jQuery 1.2.3(不是jq 1.3),我不確定該版本中是否存在.live。 有兩件事:
代碼應如下所示:
$("body").on('click', "#divclose", function(){
$("#result").fadeOut(500);
});
可以使用綁定事件時存在的其他容器來代替“ body”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.