国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery綁定事件不執行但alert后可以正常執行

2019-11-20 14:57:18
字體:
來源:轉載
供稿:網友
因為我不知道怎么描述這個問題,故標題起的這么坑爹

主要過程是這樣的,今天我寫一個類似于百度知道那樣有提問答案的頁面,所有的數據都是頁面第一次加載時通過ajax得到的
 
希望實現的效果是提問者可以通過店家每個答案后面的星星符號選擇采納此答案,被采納的答案星星圖標會變成全黑的。

開始我是這樣寫的
復制代碼 代碼如下:

$('.choose_right_answer').bind('click',function(){
if(currentUser==questioner) {
if ($(this).attr("src") == "img/star_fav_empty.png")
$(this).attr("src", "img/star_fav.png");
else
$(this).attr("src", "img/star_fav_empty.png");
}
});

.choose_right_answer是每個星星class名

運行之后點擊星星沒有反應

于是我在上面所示代碼段之前加上了一個alert("test")

此時加載頁面后彈出對話框test之后,星星圖標上綁定的事件可以正常執行。

上網搜了一通答案,得到的結果是由于所有的這些答案的節點都是動態生成的,因此可能在這些節點還沒有執行完時,就執行了事件綁定,以至于并沒有真正將事件綁定到生成的這些答案的節點。

而加上alert之后,可以明顯看到,alert語句在所有數據得到后才執行,確保了事件綁定在數據加載完之后執行,因此事件成功綁定到了各個回答上。
http://img.blog.csdn.net/20140531202827265
解決方法,使用jQuery中的on來綁定事件
復制代碼 代碼如下:

$("#answer_wrap").on('click','.choose_right_answer',function(){
if(currentUser==questioner) {
if ($(this).attr("src") == "img/star_fav_empty.png")
$(this).attr("src", "img/star_fav.png");
else
$(this).attr("src", "img/star_fav_empty.png");
}
});

answer_wrap是所有回答所在塊的id

所有在這個塊里class為choose_right_answer的元素如果發生點擊則事件冒泡到answer_wrap,執行對應函數,其余在這個塊中的元素發生點擊事件則忽略

這樣就可以解決動態加載數據中事件綁定的問題
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 志丹县| 二连浩特市| 白城市| 祁阳县| 寻乌县| 抚顺市| 永顺县| 浦江县| 清水县| 沈丘县| 平山县| 五指山市| 开原市| 凤山县| 三河市| 永和县| 兰考县| 华蓥市| 青海省| 泽州县| 绥滨县| 丹东市| 普洱| 榆中县| 新乐市| 思茅市| 龙州县| 阿拉善右旗| 买车| 大庆市| 枞阳县| 宁武县| 嵩明县| 长丰县| 托克逊县| 新昌县| 涿州市| 虹口区| 巴林左旗| 台南市| 霸州市|