2017-03-16 51 views
1

我目前来到一个jQuery的问题,目前为止我花了几个小时,我仍然无法弄清楚究竟发生了什么问题。长话短说 - 我的代码是用Play Framework编写的记忆游戏的一部分。jQuery:自定义事件不运行

jQuery的文件(简化):

$(document).ready(function() { 
    $(".card-grid").on("myEvent", '.card', function (event) { 
     $(".card-grid").flip({ 
      trigger: 'click' 
     }); 
    }); 
    $("#triggerButton").click(function() { 
     $(".card-grid").trigger("myEvent"); 
    }); 
}); 

说明:存储器 “卡片” 使用的是其他(工作)jQuery代码加载到页初始加载之后。一个.card div被加载到一个.card-grid div中。我需要运行jQuery-flip插件的flip方法才能工作。 jQuery的版本是2.1.4(翻转将不会运行在更新的版本)。

如果我用第一种方法替换myEvent,例如,click,我可以点击其中一个卡并且功能运行得很好。

如果我创建另一个功能,可以说

$(".test").on("myEvent", function (events) { 
    $(this).text("Testtext").show(); 
}); 

,改变我的按钮的目标,文本显示。测试对象中就好了。

我真的很感激,如果有人能告诉我什么是错的。

+0

可能是传播的问题?你有没有尝试过:''(“。card-grid .card”)。trigger(“myEvent”);'在你的第二个方法中? – Sam0

+0

谢谢,工作!但是现在你欠我一个解释。我以为我只需要将事件“发送”给我在第一种方法中声明的一个听众?! – lenn121

+0

重新格式化如下... – Sam0

回答

0

你的方法是正确的,但是,$(".card-grid").on("myEvent", '.card', funct...的目标是.card的所有div,它们是.card-grid的子元素。

因此,$(".card-grid .card").trigger("myEvent");为您的$("#triggerButton").click...函数提供了更好的目标。