0

我在 Ajax 完成后调用了以下函数:

function name(results)
{       
    var str='';

    str+='<div id="newDiv"></div>';
    str+='<input type="text" value="'+results.name+'" id="newTextbox"></input>'; 

   $('#otherDiv').html(str);  
}

然后我使用newDivnewTextbox一些类似的地方

$('#newDiv').html('Example Text');

这对我来说很有用。但是当我使用

$('#newTextbox').click(function(){
     alert('CLICK WITHOUT LIVE');
});

它不工作。然后我将其更改为:

$('#newTextbox').live("click",function(){
     alert('CLICK WITH LIVE');
});

然后它对我有用。

我的问题是 ( newDiv, newTextbox) 都是动态创建的。

为什么$('#newDiv').html('Example Text');不使用 live 就可以工作,但 click 事件不工作newTextbox

4

2 回答 2

0
$("body").on("click", "#newTextbox", function() {
    alert('CLICK WITHOUT LIVE');
});

您可以使用on函数为动态添加的元素绑定事件

于 2013-05-06T09:35:01.447 回答
0

作为你的问题,我想告诉你:

包含 JavaScript 事件类型的字符串,例如“click”或“keydown”。从 jQuery 开始,字符串可以包含多个以空格分隔的事件类型或自定义事件名称。

.click是一个事件,.html而不是一个事件。

所以你的.html 函数在不使用.live函数的情况下运行良好,但.click它是一个与选择器绑定的事件,它是动态创建的,这就是你需要使用.liveor.on函数来绑定事件的原因。

于 2013-05-06T09:42:36.367 回答