2015-03-03 35 views
0

对于这个问题我想传递数据取决于如果复选框被选中。数据来自.on()第二参数。试图使一个事件依赖于另一个事件和数据传递使用jquery自定义事件

我想做这样的事情。我知道这真的搞砸了。林不知道数据如何工作以及何时使用.trigger()

$(document).on('justData', function(e, data){ 
    console.log(data); 
}) 
$('.justData').on('click', function(){ 
    var insert 
    dataobj ={ 
     "mike" : 'mikevalue', 
     "john" : 'johnValue' 
    } 
    $("#checkThis").on('change', function(e, data){ 
     if(this.checked){ 
      insert = dataobj.mike 
     }else{ 
      insert = dataobj.john 
     } 
    }) 

    $(this).trigger('justData', insert) 
}) 

我想插入“mikevalue”如果框如果不加检查,“johnvalue”。

我正在学习如何使用介体。我认为这是当你做$ emitter = $({}),所以我想分开事件。当用户点击$(。justData)我会有$({})。trigger(“Ischecked”)这样的事情我很困惑。如果有人能告诉我如何使用$ emitter .trigger().on()将动态数据传递给不同的事件,那很好。

+0

上的变化被附加事件每次点击事件发生在我假设的'.justData'上是不受欢迎的行为。我已经在答案中删除了这个。 – peterdotjs 2015-03-03 17:15:30

+0

您是否介意通过按上方复选标记接受此答案?谢谢! – peterdotjs 2015-03-09 16:28:01

回答

0

你是在正确的轨道上。这是从jQuery API Docs给出了处理自定义事件的简单明了的例子:

$("#foo").on("custom", function(event, param1, param2) { 
    alert(param1 + "\n" + param2); 
}); 
$("#foo").trigger("custom", [ "Custom", "Event" ]); 

而且清理你的代码一点点:

$('body').on('justData', function(e, data){ 
    console.log(data); 
}); 

$('.justData').on('click', function(e){ 
    var insert = "", 
     $checkbox = $('#checkThis'), 
     data = { 
     "mike" : 'mikevalue', 
     "john" : 'johnValue' 
    }; 
    if($checkbox.prop('checked')){ 
     insert = data.mike; 
    } else { 
     insert = data.john; 
    } 
    $('body').trigger('justData', insert); 
}); 
+0

谢谢。你能帮我个忙吗?你可以做到这一点,以便它在用户点击$(。justData)p元素时工作,或者如果复选框被选中插入数据,它会检查它。马上。如果复选框被选中,则输出。我希望它是如果$(。justData)被点击**然后检查复选框是否被选中,而不是使用自定义事件插入适当的数据进行解耦。如果你这样做,我会接受这个答案。 – 2015-03-03 10:29:08

+0

进行了更改 - 如果您添加一些html以帮助解释您正在尝试完成的内容,则可能会更清楚。 – peterdotjs 2015-03-03 17:14:08

相关问题