我正在尝试以与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
});

07-24 17:12