樣例:javascript
$("#modify_nick").click(function () {
$(this).css("display","none");
$("#nickname_span").empty();
var input = document.createElement("input");
$(input).attr("type", "text");
$(input).attr("id", "user_nick_id");
$(input).attr("name", "user_nick");
$(input).attr("maxlength", "20");
$(input).attr("value", "<?php echo $userinfo->nickname ?>");
$(input).appendTo("#nickname_span");
$(input).focusEnd();
});
$("#nickname_span").on("blur","input[name='user_nick']",function(){
var startVal = "<?php echo $userinfo->nickname ?>";
var endVal = $(this).val();
$("#modify_nick").css("display","block");
if(endVal != startVal){
if(endVal != ""){
$.ajax({
type: "GET",
url: "<?php echo Yii::app()->createUrl('user/modifyUserInfo') ?>",
data: {user_nick: endVal},
dataType: "json",
success: function (msg) {
if(msg == 666){
window.location.href = "<?php echo Yii::app()->createUrl('user/userManager') ?>";
}
}
});
}
}
});
說明:
在使用jQuery的方式爲元素綁定事件時,我常用bind或者click,但這隻能爲頁面已經加載好的元素綁定事件。像須要用ajax的方式請求遠程數據來動態添加頁面元素時,顯然以上幾種綁定事件的方式是無效的,具體寫法以下圖。php
$(selector).bind(event,data,function)
$(selector).click(function)
爲動態添加的元素綁定事件有如下幾種方式:css
1.delegate():向匹配元素的當前或將來的子元素附加一個或多個事件處理器html
$(selector).delegate(childSelector,event,data,function)
目前大多數jquery版本均可用,不過我通常不用它。java
看出它們的不一樣了嗎,第二種寫法是錯誤的,記住必定要把事件寫在元素的後面。
2.live():爲當前或將來的匹配元素添加一個或多個事件處理器jquery
$(selector).live(event,data,function)
jquery1.8版本之前推薦使用該方法;jquery1.8版本以後就不建議使用了,我試了下,也是無效的,因此高版本的jquery推薦使用on()方法綁定事件。ajax
3.on():適用於當前及將來的元素(好比由腳本建立的新元素)
$(selector).on(event,childSelector,data,function,map)
試驗了下,大多數版本的jquery都是支持這個方法的,也是我比較喜歡使用的方法。json
4.onclick事件:動態添加數據時,就爲元素綁定onclick事件