Javascript 函数上的jQuery,并将值分配给参数

Javascript 函数上的jQuery,并将值分配给参数,javascript,jquery,Javascript,Jquery,我正在尝试通过单选按钮选择的更改来委派功能 $(document).ready(function(){ $('body').on('change', 'radioBtnName', function(e){ $(this).after('<p>"No click me!"</p>'); }); });​ 然后通过 如何在设置委托时包含这些参数并为其赋值。我正在动态创建单选按钮,并希望将函数与选择中的更改相关联。这可以通过数据-*属性

我正在尝试通过单选按钮选择的更改来委派功能

$(document).ready(function(){
    $('body').on('change', 'radioBtnName', function(e){
        $(this).after('<p>"No click me!"</p>');   
    });
});​
然后通过


如何在设置委托时包含这些参数并为其赋值。我正在动态创建单选按钮,并希望将函数与选择中的更改相关联。

这可以通过
数据-*
属性轻松完成,如果它们是每个元素。因此,按钮上有:

$(document).ready(function(){
    $('body').on('change', 'radioBtnName', function(e){
        $(this).after('<p>"No click me!"</p>');   
    });
});​
<input type="radio" data-param1="hell" data-param2="world" />

此外,如果调用,它将返回整个
数据
对象。

将它们作为数据属性存储在单选按钮上:

$(document).on('change', 'radioBtnName', function(e){
    var $button = $(this);
    var param1 = $button.data("param1");
    var param2 = $button.data("param2");
    // do whatever you want with the values :)   
});

注意:对于委托事件,使用
文档
而不是
正文
。这就避免了对DOM就绪处理程序的需要(并避免了
body
的错误)

如果我没有弄错,您希望使用
.on()
方法传递额外的参数。我希望下面的例子对您有所帮助

$(document).on('change','radioBlock input[type=“radio”]”,{param1:'hell',param2:'world',函数(e){
console.log(e.data.param1);
});

您可以像这样使用
$(this).data()

$(函数(){
$(“正文”)。在('click',“#radioBlock input[type='radio']”上,函数(e){
警报('Data Value-'+$(this).Data('Value'));
})
})

第一台
第二台
第三台


这些值与什么相关?它们是每个按钮的吗?使用
数据-
属性。@go编码否,在实际程序中,这是在另一个函数中,该函数计算并构建一个包含嵌套对象数组等的复杂对象。因此,单选按钮代表三个类别,在更改事件中,我希望能够将此复杂对象发送到另一个函数,以便根据在单选按钮上完成的选择执行一些处理纽扣,嘿,你回来了?你好吗?像往常一样浪费我的时间。我看到这样的工作方式根本没有改变:)哈哈,伙计。你一点也没变。无论如何。很高兴再次见到你。@Andy:Cut&paste error from original:)将其完全删除为不相关抱歉,我的意思是你已经将
$(此)
分配给
$按钮
。无需再次使用
$(this)
。我们可以在data-param1中放置一个复杂的对象而不是一个简单的字符串吗?我有一个复杂的对象要传递给处理单选按钮选择更改的函数。@新手您可以通过
data
输入JSON,但在处理过程中,请使用
JSON.parse()
并获取对象。如果按原样嵌入JSON数据,则会出现双引号终止HTML属性的问题。@新手请参见此处的第二个参数:我将离开办公室,我将脱机一段时间
:(
只针对一个特定ID选择的委派事件处理程序有什么意义?这不是一个非常可维护的解决方案。最好是
数据-
驱动它。@GoneCode我完全同意你的意见,我会按照你建议的方式来做。我只是想向你展示()
方法提供了一种传递额外参数的方法(这是我阅读问题的方式,当然可能是错误的)。最后是OP决定他最喜欢哪种解决方案。@Flyer53我喜欢这样一个事实,我可以将参数值传递给handler函数,对我来说,它似乎更合适。不过,我想在这里问一下,我们如何选择一组单选按钮(不仅仅是其中一个带有id的按钮)?这里的name属性可以用来覆盖组中的更改吗?我找到了您和@SaumyaRastogi解决方案的组合。不知道如何划分积分。@新手我将示例更改为使用类名作为选择器。因此您只需要一个处理程序…但前提是该类的所有单选按钮都使用相同的额外p参数确实如此。我通过结合您的解决方案和@Flyer53解决方案制定了我的解决方案。@新手-哈哈哈听到您找到了自己的解决方案真是太好了,顺便说一句,您至少可以给我们两个赞成票……否则这取决于您选择接受的答案
$(this).data("param1");
$(this).data("param2");
$(document).on('change', 'radioBtnName', function(e){
    var $button = $(this);
    var param1 = $button.data("param1");
    var param2 = $button.data("param2");
    // do whatever you want with the values :)   
});