2017-04-06 19 views
0

我有bootstrap模態,帶有視圖註釋和添加註釋函數。我試圖通過按回車來添加評論,而沒有在我的模式上有任何可見的按鈕。問題是因爲按鈕和textarea是動態呈現的,我必須將它們綁定到文檔,這是我奮鬥的地方。什麼是正確的做法?正如我從官方文檔中理解的,首先我應該指定事件(keyup並點擊我的例子),第二個選擇器(textarea和按鈕id),然後是數據和處理程序。我不明白我的情況是什麼。用於動態呈現元素的JQuery document.on和document.off

HTML:

<textarea id="add-comment-textarea"></textarea> 
<input type="submit" id="add-comment-button" style="position: absolute; left: -9999px; width: 1px; height: 1px;" tabindex="-1" /> 

的Javascript:

$(document).off('keyup', '#add-comment-textarea'); 
$(document).on('keyup', '#add-comment-textarea', function(event) { 
    if(event.keyCode === 13) { 
     console.log('key up'); 
     $('#addComment').click(); 
    } 
}); 

$(document).off('click', '#add-comment-button'); 
$(document).on('click', '#add-comment-button', function() { 
    console.log('clicked'); 
}); 
+1

它並不是'文件'。它只需要是一個不被替換的父元素。否則,假設你沒有複製身份證,你看起來是正確的。 –

+0

值得注意的是你的表單值將不提交或序列化,因爲它們不是[成功](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.2) (他們缺少'name'屬性)。 –

回答

0

您必須設置事件與在功能簡單的空白。此外,你必須寫在逗號分隔,最後的的參數的選擇上功能是之前分配給該事件(參見http://api.jquery.com/off/)起源處理。

所以你可以使用它像這樣的:

$(document).off('click keyup', '#addComment, #add-comment-textarea'); 
$(document).on('click keyup', '#addComment, #add-comment-textarea', function() { /* Do something */ }); 

不過,我不知道這是你想要我會用關閉功能註銷的事件是什麼之後,我會直接註冊事件的HTML元素:。

$(document).off('click keyup', '#addComment, #add-comment-textarea'); 
$('#addComment').click(function() { /* Do something */ }); 
$('#add-comment-textarea').keyup(function(event) { /* Do something */ }); 
0

實際上,在將腳本從模態部分移動到主視圖後,問題得到解決。

0

爲了完成反應,照顧始終降低根元素最接近你的目標:如果評論元素在訪問格總是停靠,你可以識別它,然後使用$(「#yourdiv 「).on(等)。