2012-02-08 26 views
0

我有一個很大的源文件,所以不在這裏分享它,但是我遇到的問題是,我無法用下面的代碼添加單擊事件:on事件可能會失敗的情況?

$(document).on('click','#test' + testId , function(e){ 
      console.log('I was clicked'); 
     }); 

如果我使用此代碼在單獨的文件,它的工作原理,但我的實際來源,我無法調度事件:(可能是什麼原因呢?

+3

原因可能是你希望用'#test'+ testId'識別的元素實際上不存在。但是,你的猜測答案的能力應該比我的好,因爲你有能夠看到Javascript和HTML的所有相關部分的優勢。 – 2012-02-08 14:58:47

+0

我把事件附加到文檔中,而不是元素,所以在事件發送時元素不需要存在 – wasimbhalli 2012-02-08 15:16:46

+1

我的觀點是,元素可能從不存在,並且元素的id可能不存在,重新點擊與使用變量'testId'的選擇器中指定的id不同。 – 2012-02-08 15:37:27

回答

0

我寫的代碼中的setTimeout方法和解決的問題。我並沒有期待這一點,因爲我將這個事件附加到了身體上而不是元素上。在將事件附加到身體時,該元素並不存在,因此事件未被分派。

0

您的文檔必須加載或元素'#test' + testId必須存在至少。

<body onload="init()"> 

而這裏你的javascript f結:

function init() 
{ 
    $(document).on('click','#test' + testId , function(e){ 
     console.log('I was clicked'); 
    }); 
} 
+1

他將事件附加到'document',而不是'#test'+ testId'。這不是它 – gdoron 2012-02-08 15:09:56

+0

天啊。不要這樣做。 HTML屬性中的Javascript是可怕的! – 2012-02-08 18:11:05

0

可能是什麼原因?

  1. #test + testId元素不存在。
  2. 其他事件處理程序停止傳播與e.stopPropagation()return false;
+0

我沒有e.preventPropagation();或者在我的代碼中返回false。這些語句是否存在於jquery事件中?就像我還有其他同樣的事情('點擊'事件,可能會阻止傳播? – wasimbhalli 2012-02-08 15:12:15

+0

@wasimbhalli。只有當它返回false。嘗試使用'#test'+ testId'確保該元素真的存在。 – gdoron 2012-02-08 15:13:48

+0

是的,我創建了這個元素,並且我測試了它,並且它存在。順便說一下,不是'on'方法是否替換爲live?那麼它應該也可以在元素稍後添加到DOM時起作用 – wasimbhalli 2012-02-08 15:15:28

相關問題