2013-05-06 79 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