2014-09-25 57 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>