我正在尝试以与jQuery .on
列表器类似的方式来监听著名的DOM元素事件。
基本上我正在尝试使用famo.us
var surface = new Surface({content: '<div>' +
'<button class="close">Close</button>'
'<button class"edit">Edit</button>' +
'</div>'});
surface.on("click", ".edit", function () {
console.log("edit button has been clicked");
});
显然,它不能在famo.us中那样工作,因为您不能起诉选择器作为第二个参数,但是我想知道我将如何处理famo.us中的这种情况。
最佳答案
在Famo.us中,EventHandler.on方法仅采用两个参数:
EventHandler.prototype.on = function on(type, handler)
我知道有两个选项可以完成此操作。
将jQuery注入到您的项目中,然后在EventHandler捕获“ click”之后使用选择器(真的不是首选)
重写EventHandler方法并编写选择器的用法
我了解您在寻找什么,但是如果您使用的是纯Famo.us代码,我会提出不同的设置。我建议不要创建部分HTML块来放入内容,而应在ContainerSurface中为每个按钮放置单独的表面。您将获得类似的HTML输出,但是在每个表面上都具有Famo.us的所有功能。我在下面为您整理了一个小片段。希望这个对你有帮助。
var buttonContainer = new ContainerSurface({
classes: ['editbuttons']
});
var deleteButton = Surface({
classes: ['delete']
});
var deleteButtonModifier = new Modifier();
var editButton = Surface({
classes: ['edit']
});
var editButtonModifier = new Modifier();
buttonContainer.add(deleteButtonModifier).add(deleteButton);
buttonContainer.add(editButtonModifier).add(editButton);
deleteButton.on('click',function() {
// Event code
});
editButton.on('click',function() {
// Event code
});