Jquery 向html中添加以前定义的函数将起作用

Jquery 向html中添加以前定义的函数将起作用,jquery,Jquery,我有以下文件: <html> <body> <div id="preview"> <p>test</p> </div> </body> </html> 试验 我有以下代码: $("p").mouseover(function(){ $("p").css("background-color","yellow"); }); $("p").mouse

我有以下文件:

<html>
   <body>
     <div id="preview">
      <p>test</p>
     </div>
   </body>
</html>

试验

我有以下代码:

$("p").mouseover(function(){
    $("p").css("background-color","yellow");
});
$("p").mouseout(function(){
    $("p").css("background-color","lightgray");
});

function add(){ 
    $("#preview").append("<p id="test">test2</p>");
}
$(“p”).mouseover(函数(){
css(“背景色”、“黄色”);
});
$(“p”).mouseout(函数(){
css(“背景色”、“浅灰色”);
});
函数add(){
$(“#预览”)。追加(

test2

”; }

问题是,
mouseover
mouseout
函数只对我在html中添加的
起作用,而不是在我通过jquery附加的
上。我能做什么呢附加的jquery
也能调用mouseover和mouseout?

您应该使用
.on()
来添加处理程序。像这样的事

$('body').on('mouseover', 'p', function() { ...
这将向主体添加一个事件处理程序,但在实际调用函数之前,将首先通过第二个参数进行过滤。这样,所有的
标记(当前和未来)都将使事件处理程序工作


对于完整文档,请阅读API文档:

您应该使用
.on()
添加处理程序。像这样的事

$('body').on('mouseover', 'p', function() { ...
这将向主体添加一个事件处理程序,但在实际调用函数之前,将首先通过第二个参数进行过滤。这样,所有的
标记(当前和未来)都将使事件处理程序工作


对于完整文档,请阅读API文档:

您需要通过jQuery的
.on()
函数使用事件委派,该函数将向选择器应用事件,即使存在动态内容,如下所示:

$('body').on('mouseover', 'p', function() {

});

注意:这指示jQuery在HTML的
(现在或将来)中查找任何
标记,当它们生成
mouseover
事件时,就会执行
函数()
回调中的内容。

您需要通过jQuery的
.on()
函数使用事件委派,即使存在动态内容,也会将事件应用于选择器,如下所示:

$('body').on('mouseover', 'p', function() {

});

注意:这指示jQuery在HTML的
(现在或将来)中查找任何
标记,当它们生成
mouseover
事件时,将执行
函数()
回调中的内容。

改用jQuery的on()。以后请使用搜索函数。这个问题以前被问过很多次。请改用jQuery的on()。以后请使用搜索函数。这个问题以前被问过很多次。