我有以下情况:我想用javascript动态创建一个对象,它有一个onclick函数。我在我的HTML中的某处插入了这个元素,希望能够捕获onclick函数。
var newElement= new Element('li', { 'id' : 'Foo', 'onclick' : 'Bar();'} )
$("randomElement").grab(newElement, 'top');
我测试了这个,它可以正常工作:firefox,opera,chrome,Internet Explorer 8及以上版本。我的问题在于Internet Explorer 7,它根本不处理事件 虽然可以选择放弃对IE7的支持,但我仍然希望尽可能多地支持浏览器。 这个问题有解决方案或解决方法吗?
答案 0 :(得分:2)
通过将“Bar()”字符串分配给eval
属性,而不是实际添加事件,您似乎尝试执行某种onclick
。如果你想直接传递一个事件,你必须使用camelCase,因此它应该是onClick
而不是onclick
。 小心,如果你只是做了那个改变就行不通,解释如下:
您可以尝试使用以下内容重写元素创建吗?
var newElement = new Element('li', {
id: 'Foo',
events: {
click: function() { Bar(); }
}
})
这实际上是在MooTools中使用事件实例化元素的首选方法,并通过显式调用Bar
函数作为点击回调的一部分来避免隐式eval。