2013-03-20 66 views
2

我必须使用JavaScript函数将innerHTML传递给div。
我传递的innerHTML也有一个div,我必须附加一个单击事件,以便点击它时,该元素响应点击事件。将innerHTML传递给元素并附加事件

我有一个小提琴这里解释一下这个问题: http://jsfiddle.net/K2aQT/2/

HTML

<body> 
    <div id="containerFrame"> 
    </div> 
</body> 

的JavaScript

window.onload = function(){usersFunction();}; 

function usersFunction(){ 
    var someHtml = '<div> <div class ="btnSettings"> </div> <span></span> </div>'; 
    changeSource(someHtml); 
} 

function changeSource(newSource){ 
    document.getElementById("containerFrame").innerHTML = newSource; 
} 

虽然经过源,我怎么告诉JavaScript函数这个被传递的HTML也有一些必须绑定到点击的元素事件?

回答

1

如果你必须这样做,这样,你可以考虑加入HTML字符串本身内单击处理:

var someHtml = '<div> <div class ="btnSettings" onclick="return myFunction()"> </div> <span></span> </div>'; 

另外,修改.innerHTML后,找到合适的<div>

var frame = document.getElementById('containerFrame'); 
frame.innerHTML = newSource; 
var settings = frame.getElementsByClassName('btnSettings')[0]; 

// depends on the browser, some IE versions use attachEvent() 
settings.addEventListener('click', function(event) { 
}, false); 
+0

那是一个e legant方法还是没有其他方法?由于用户正在传递'source',这是否意味着他将附加点击事件?但正如我所说的,当从插件中点击特定的按钮时,我也必须传递其他信息。我将如何处理这个C​​ASE? – user1240679 2013-03-20 12:58:22

+0

我试着用'return myfunction()'。无法获得在该红色div上工作的lcikc事件。 http://jsfiddle.net/9LJBY/1/ – user1240679 2013-03-20 13:02:23

+0

@ user1240679不,我不会说它很干净;用另一种方式更新答案。 – 2013-03-20 13:02:34

0

我认为你需要类似的东西:

document.getElementById("containerFrame").onclick = function() { 
    // put your function here 
}; 
+0

请看小提琴。我认为你的理解存在差距。 – user1240679 2013-03-20 13:00:24