我需要获取单击按钮的值或任何其他attr,才能在函数中将其用作event.data
。
以下是设置:
我可以使用无线电输入和东西来处理该功能的其他控件:
$( "input[name=selectdept]" ).on ("click", { searchdept: function (){ return $( "input[name=selectdept]:checked" ).val()}}, startsearch );
如您所见,单击输入将触发function(startsearch)
并获取要在函数内使用的event.data.searchdept
的输入值。一切正常。
但尝试使用按钮让我发疯。我尝试了一切我无法想象的事情。因为我必须按类别而不是按唯一名称或ID来获取按钮,所以我无法像使用无线电输入那样使用。我尝试使用$(this)
获取任何attr。但只是想出了" undefined"。我的一些方法:
$(".byname").on ("click", {letter: $(this).attr('value')}, searchdept );
或
$(".byname").on ("click", {letter: function(){ return $(this).attr("value")}}, searchdept );
或任何类型的
.val() // .attr() // .text() // .html() .... you name it
在某处,我发现" event.target.value" 会提供正确的值(例如" B"对于按钮B)但不是在我的功能环境中一个很好的解决方案,因为总共有3种不同的方式(26个按钮/ 4个无线电输入/文本输入)来启动功能,传递的值会使它变得复杂。
答案 0 :(得分:0)
你好我真的不明白你在这里想做什么,但猜想你想得到你为每个按钮设置的数据变量的值。
我重新创建了你的场景 编辑 - 更新了Javascript代码,现在它似乎按照您的要求运行
$('.byalpha').on('click', {
'letter': function(element) {
return $(element).data('letter');
}
},
function(e) {
$('#picked_letter').html(e.data.letter(this));
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input class="byalpha" type='button' value='A' data-letter="a" />
<input class="byalpha" type='button' value='B' data-letter="b" />
<input class="byalpha" type='button' value='C' data-letter="c" />
<input class="byalpha" type='button' value='D' data-letter="d" />
<input class="byalpha" type='button' value='E' data-letter="e" />
<hr/>
<div>
<span>Letter : </span> <span id="picked_letter"></span>
</div>
<hr/>
&#13;
$('.byalpha').on('click',
{'letter': function (element) {
return $(element).data('letter');
}
},
function (e) {
$('#picked_letter').html(e.data.letter(this));
}
);
这是工作样本的链接