我的问题......
所以我有一个从JavaScript函数创建的侧栏,我想添加一个onclick元素,该元素在点击li元素时激活。这就是我所拥有的,但我不知道如何纠正它。
var theArray = [{'name': 'Home', 'url': 'EverythingPrg.html'}]
window.onload = function () {
$(function () {
for (var obj in theArray) {
$('#theUl').append($("<li/>", {'onclick:location.href': theArray[obj].url}).append($("<a/>", {'html': theArray[obj].name})));
}
})
侧栏确实显示,但点击后没有任何事情发生......
答案 0 :(得分:0)
可能是范围问题 - 您告诉它使用obj
onclick但在click事件的范围内不存在。
尝试将li创建为jquery对象,并通过jquery事件绑定(.on
)附加事件。
我建议的另一个变化是for (var obj in theArray) {
是糟糕的形式。如果更改了数组原型,则此代码将失败。相反,只需增加一个计数器。
var theArray = [{'name': 'Home', 'url': 'EverythingPrg.html'}]
$(function () {
$(document).ready(function() {
for (var i = 0; i < theArray.length; i++) {
var obj = theArray[i],
li = $('<li>').html('<a>' + theArray[obj].name + '</a>');
li.on('click', function() {
window.location.href = theArray[obj].url;
});
$('#theUl').append(li);
}
});
});
答案 1 :(得分:0)
将此for循环替换为能够按需使用
for (var obj in theArray) {
$('#theUl').append($("<li onclick=location.href='"+ theArray[obj].url + "' ></li>").append($("<a/>", {'html': theArray[obj].name})));
}