2015-03-03 37 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

相關問題