使用带有键值的.trigger()进行jQuery

使用带有键值的.trigger()进行jQuery,jquery,Jquery,我很难掌握如何使用jquery.trigger()。我只是绕着复选框循环,找出哪些复选框被选中了。然后我尝试将这些值映射到键值对。如果我记录paymentValue和paymentName,我会得到正确的输出,比如:cash和true,所以我希望在我的键值中有类似cash:true的内容。 除非我尝试运行此代码,否则会出现paymentName未定义错误 var filterPayment = $('input[name="filter-payment"]:checked'); var paym

我很难掌握如何使用jquery.trigger()。我只是绕着复选框循环,找出哪些复选框被选中了。然后我尝试将这些值映射到键值对。如果我记录paymentValue和paymentName,我会得到正确的输出,比如:cashtrue,所以我希望在我的键值中有类似cash:true的内容。 除非我尝试运行此代码,否则会出现paymentName未定义错误

var filterPayment = $('input[name="filter-payment"]:checked');
var paymentObj = {};         

$(document).bind("updateFilters", function() {
    filterPayment.each( function () {
       var paymentValue = paymentObj[this.value];
       paymentValue = this.checked;   

       var paymentName = userObj[this.name];
       paymentName = this.value;             
    });
});

$(document).trigger('updateFilters', {
    paymentValue : paymentName
});
有什么想法吗?

试试看

var filterPayment = $('input[name="filter-payment"]');
var paymentObj = {};
var userObj = {};

//listern to the change event
filterPayment.change(function () {
    var paymentValue = paymentObj[this.value];
    paymentValue = this.checked;

    var paymentName = userObj[this.name];
    paymentName = this.value;

    //create a parameter object, since the key is dynamic need to use bracket notation to assign the value
    var param = {};
    param[paymentValue] = paymentName;

    $(document).trigger('updateFilters', param);
}).filter(':checked').change()

$(document).bind("updateFilters", function () {
    alert('filter updated')
});

变量
paymentName
未声明。。。它是在
每个
回调的本地范围内声明的。也许我不明白,在每个回调之外如何声明它?如果我把它作为var paymentName放在每个回调之上,我仍然会得到相同的错误。你能举一个例子吗?我通过看一些代码学得更好。你在这里想做什么?您是否正在尝试为每个
输入[name=“filter payment”]:选中的
元素触发
updateFilters
事件?是否正确?我正在尝试在每次选中复选框时触发updateFilters。谢谢你的帮助!