有没有办法在具有famo.us的特定类的DOM元素上侦听事件

时间:2014-12-14 05:41:31

标签: javascript famo.us

我正在尝试以与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中的这种情况。

1 个答案:

答案 0 :(得分:1)

在Famo.us中,EventHandler.on方法只接受两个参数:

EventHandler.prototype.on = function on(type, handler)

我知道有两种选择可以让你完成这项工作。

  1. 将jQuery注入项目,然后在EventHandler捕获'click'后使用选择器(真的不是首选)
  2. 覆盖EventHandler方法并编码选择器用法
  3. 我理解您在寻找什么,但如果您使用的是纯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
    });