2012-08-10 55 views
0

我真的堅持了一個jQuery的問題,我希望有人能幫助我了......jQuery的後期綁定的Ajax元素不起作用

所以我有一個選項列表在左邊,而當你點擊一個,表單是通過右邊的Ajax生成的。有形式此元素:

<input type="text" class="value" value="something"> 

而我想要做的就是調用

$(".value").tagsInput(); 

這是一個jQuery插件,當你問的作品非常像這樣的「標籤」輸入框題。

所以,我想這一點:

$(document).ready(function() { 
    $(".value").on("load", function() { 
    console.log("Tags Input"); 
    $(".value").tagsInput(); 
    }); 
}); 

,並沒有什麼打印出來。我也試過這個:

$(document).on("change", ".value", function() { 
    console.log("Tags Input"); 
    $(".value").tagsInput(); 
}); 

而且它也不起作用。我想知道我在哪裏做錯了。誰能幫我嗎?謝謝!!

+0

鏈接到您的插件?他們很可能有自己的活動 – OptimusCrime 2012-08-10 17:46:45

+0

@OptimusCrime鏈接是http://xoxco.com/projects/code/tagsinput/。但是我認爲它至少應該在控制檯上打印'Tags Input'? – aforaudrey 2012-08-10 17:47:56

+0

不能綁定$(「。value」)。tagsInput();在你的成功函數調用? – 2012-08-10 18:13:26

回答

0

正如指出的Shabnam,「變」的事件是你想要什麼,因爲一旦外地模糊它僅觸發。

無論如何,從插件文檔看來,每次按下按鍵時都不必調用該函數,但它會自動附加自己的事件處理函數。

所以,也許你應該罰款只:

$(document).ready(function() { 
    $(".value").tagsInput(); 
}); 

.on處理程序不會有任何效果,因爲load事件是由document僅發射時的頁面已準備就緒。

如果您想調試一下,請查看支持的回調,例如onChange

邊注

我不喜歡這個插件是怎麼寫的,因爲它堵塞「全球性」 jQuery.fn命名空間,有很多的功能,而jQuery的文檔建議不這樣做(見:Namespacing)。

UPDATE

在這裏看到:http://jsfiddle.net/aFPHL/這方面的工作的一個例子(​​被monkeypatched以避免調用實際的URL,但它的行爲幾乎是一樣的真實的)。

+0

但是當第一次加載頁面時,沒有'「.value」'。我只是稍後通過Ajax添加表單。所以我不認爲簡單的'$(「。value」)。tagsInput();'會綁定它...... @。@ – aforaudrey 2012-08-10 18:05:15

+0

如果你通過ajax加載這個表單,你將不得不手動調用''。如果你不想這樣做,我猜你必須修補插件才能使用''.on''來代替''load()''回調函數中的tagsInput()'' ''.bind''來附加事件處理程序 – redShadow 2012-08-10 18:08:36

+0

對不起,我不太明白。我應該在哪裏調用'.tagsInput()'?你指的是哪個'load()'回調?謝謝! – aforaudrey 2012-08-10 18:10:59

0

當輸入元素失去焦點時,「更改」事件被觸發。如果你想在每個鍵輸入結束Ajax調用,請嘗試使用鍵盤事件