创建元素时Onclick事件不起作用

时间:2014-01-09 18:08:56

标签: javascript jquery events onclick createelement

我正在使用此代码添加元素,并且onclick事件工作正常:

$("#main").before('<ul class=\"breadcrumb\"><li><a href=\"javascript:;\" onclick=\"Search(\'' + "/" + '\')\"><span>Home</span></a></li></ul>');

但是我不再使用jQuery,并且使用下面的代码,onclick事件不会被触发。 知道为什么会这样吗?

var breadcrumb = document.createElement('ul');
breadcrumb.className = 'breadcrumb';

var element = document.createElement('li');

var elementlink = document.createElement('a');
elementlink.onclick = function () { 
    Search("/"); 
    return false;
};

var elementspan = document.createElement('span');
elementspan.innerHTML = 'Home';

elementlink.appendChild(elementspan);
element.appendChild(elementlink);
breadcrumb.appendChild(element);

document.getElementById('main').insertBefore(breadcrumb, null);

1 个答案:

答案 0 :(得分:1)

添加侦听器,而不是设置元素的onclick属性。

显然它应该可以工作:http://jsfiddle.net/6gb2k/

尝试:

elementlink.addEventListener('onclick', function(e) { ... }, false);

或清洁:

var handleClick = function(e) {
    ...
}
elementlink.addEventListener('onclick', handleClick, false);

上面的代码应该可以根据@ crush的评论和我的小提琴来运作。