2013-05-06 56 views
0
使用.live()或。对()

我有以下的功能,我在阿贾克斯之后调用完成:如何下面的代码是不工作jQuery中

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'); 
}); 

然后它正在为我工​​作。

我的问题是(newDivnewTextbox)是动态创建的。

$('#newDiv').html('Example Text');为什么$('#newDiv').html('Example Text');没有使用直播,但点击事件不起作用newTextbox

+0

_那么我使用newDiv和newTextbox一些where_ ..在哪里? – 2013-05-06 09:30:37

+0

在这个函数完成之后的另一个函数中。在那个函数中我使用了上面的语句 – PSR 2013-05-06 09:30:53

+0

在那之后你对'str'变量做了什么?显示的代码只是一个局部变量,从不用于任何事情。你在什么时候试图访问这些元素? – Guffa 2013-05-06 09:31:28

回答

0

至于你的问题绑定的事件,我想告诉你的是:

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

这里.click是一个事件,.html不是一个事件。

所以你.html功能运作良好,而无需使用.live功能,但.click是与选择器绑定的事件,它是动态创建的,这就是为什么你需要使用.live.on功能绑定事件。

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

可以使用on功能,为动态添加元素

+0

我知道使用.on()但为什么.html()正在工作 – PSR 2013-05-06 09:35:57