2014-09-25 59 views
0

請幫助我。我創建了一個運行時拼寫檢查系統。我面臨的問題是,當系統返回正確的拼寫時,它會顯示超鏈接的單詞。如果用戶單擊該超鏈接,它應該用建議的工作覆蓋該單詞。不幸的是,jQuery創建超鏈接不會觸發 我已經創建了這個虛擬項目,因爲實際代碼非常冗長。的jsfiddle鏈接是這樣的:http://jsfiddle.net/pk2mk863/1/jQuery:由其他事件創建的事件

<html> 
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> 
<body> 

<a href="#" id="testing">Testing</a> 
<div id="testing1"></div> 

<script> 
    $(document).ready(function() { 
     $('#testing').click(function() { 
      $('#testing1').html('<a href="#" id="testing22">click me again</a>'); 
     }); 

     $('#testing22').click(function() { 
      alert("i rock"); 
     }); 
    }); 
</script> 
</body> 
</html> 

回答

0

使用委託的事件處理程序,而不是:

例如

<script> 
    $(document).ready(function() { 
     $('#testing').click(function() { 
      $('#testing1').html('<a href="#" id="testing22">click me again</a>'); 
     }); 

     $(document).on('click', '#testing22', function() { 
      alert("i rock"); 
     }); 
    }); 
</script> 

這是通過監聽一個事件(在這種情況下點擊)冒泡到非改變的祖先(在這種情況下document如果沒有別的用場)。它然後適用jQuery選擇器和然後適用於功能任何匹配元素,導致事件

該技術允許您將事件連接到尚不存在的元素。

0

因爲要附加HTML動態內部DOM,因此,使用事件委派,如下圖所示:

$(document).on('click','#testing22',function(){ 
    alert("i rock"); 
}); 

現在你完整的jQuery代碼看起來就像如下圖所示:

<script> 
    $(document).ready(function() { 
     $('#testing').click(function() { 
      $('#testing1').html('<a href="#" id="testing22">click me again</a>'); 
     }); 

     $(document).on('click', '#testing22', function() { 
      alert("i rock"); 
     }); 
    }); 
</script>