2011-11-15 43 views
1

我有以下情況:我想用javascript,它有一個onclick函數動態創建一個對象。我將這個元素插入到我的HTML中,希望onclick函數能夠被捕獲。動態生成onclick不處理IE7

var newElement= new Element('li', { 'id' : 'Foo', 'onclick' : 'Bar();'}) 
$("randomElement").grab(newElement, 'top'); 

我測試了這個,它在firefox,opera,chrome,Internet Explorer 8及以上版本中正常工作。我的問題在於Internet Explorer 7,它根本不處理事件。
儘管可以選擇放棄我對IE7的支持,但我仍然希望支持儘可能多的瀏覽器。 有沒有針對這個問題的解決方案或解決方法?

回答

2

看起來您正在嘗試通過將'Bar()'字符串分配給onclick屬性來完成某種eval,而不是實際添加事件。如果你想直接通過一個事件,你必須做camelCase,所以它應該是onClick而不是onclick小心,如果你只是做了改變它將無法正常工作,解釋如下:

你可以嘗試重寫你的元素創建與以下?

var newElement = new Element('li', { 
    id: 'Foo', 
    events: { 
     click: function() { Bar(); } 
    } 
}) 

這實際上是在實例化與MooTools的事件元素的首選方式,並通過顯式調用Bar功能點擊回調的一部分,避免了隱含的EVAL。

+1

'click:function {Bar(); ''? '點擊:酒吧'會更好... – MattiSG

+0

如果'Bar'尚未定義你正在聲明'newElement'的地方。我特意將它包含在一個匿名函數中,以便這5行代碼可以位於其應用程序的任何位置,只需要在單擊元素「Bar」時在其範圍內存在。 – gonchuki