2012-10-02 88 views
0

我有一些問題與查詢和綁定,因爲它似乎。爲什麼我必須呈現jQuery與視圖

我_layout

我在頁面的底部得到了jQuery的,它有一個.on('click')

在有一個partialView是患上了「添加項目」的鏈接,當我點擊它使$.post()返回一個parialview並將其填充到div容器中。

下一次,當我嘗試添加另一個項目點擊相同的鏈接,它只是像一個鏈接和刷新網站,就像它失去了綁定到jQuery的。如果我選擇在每次渲染時都使用jquery,但爲了結構的緣故,我不希望在頁面中間有jquery腳本。

這是爲什麼,我該怎麼辦?

編輯:
這是我得到的綁定。它像以前一樣工作。

$('.menu-day').on('click', 'a.addItem', function (e) { 
      e.preventDefault(); 
      console.log('ok'); 
      addRow($(this).attr('id')); 
}); 
+0

jQuery應該總是在主頁面中。 –

+0

是的,這就是我的意思。 '爲了結構的緣故,我不想在頁面中間有jquery腳本。' –

+0

示例代碼可能甚至是jsfiddle它打破/不工作 – Mutmatt

回答

2

上使用$()。(「點擊」,函數(){...})的作品很像傳統。點擊()結合在該元素具有前在頁面上存在你綁定它。例如:

$("ul li").on('click', function() { ... }) 

所以這不適用於動態添加列表元素。你可以做的是在點擊中指定一個選擇器,它將監聽觸發上下文的事件。例如:

$("ul").on('click', 'li', function() { ... }); 

現在點擊列表中的項目無論何時加入,他們將觸發,因爲它是被捆綁,並仔細地傾聽特定的eventTarget容器列表。

+0

雅,他沒有發佈他的點擊處理程序,但我懷疑他沒有使用正確的方法。關於其他一些評論,.live()已被棄用,並被替換爲.on() – Rooster

+0

多數民衆贊成在有趣的是,我可以添加一個類的特定選擇器像'$(「。點擊我」)。 ('click','a.click-me',function(){...});?'或者用$(「a.click-me」)就足夠了on('click',' a',function(){...});?' –

+0

@JohnB即時通訊使用'.on()'像Mikes第一個例子 –

0

您可以使用delegate()方法來綁定Dom中存在的事件和將來添加的元素。通過這個link

+1

但是,您可以在1.8中棄用 –

相關問題