使用 .on("click"...) 获取点击按钮的 value/attr 作为 event.data

Get value/attr of clicked button as event.data with .on("click"...)

我需要获取单击按钮的值或任何其他属性,以便在函数中将其用作 event.data

设置如下:

我可以使用无线电输入和其他东西来处理该功能的其他控件:

$( "input[name=selectdept]" ).on ("click", {  searchdept: function (){ return $( "input[name=selectdept]:checked" ).val()}}, startsearch );

因此,如您所见,单击输入会触发 function(startsearch) 并获取输入值 event.data.searchdept 以在函数内部使用。一切正常。

但是尝试用按钮来做这件事让我发疯。我尝试了我只能想象的一切。由于我必须通过 class 而不是通过唯一名称或 ID 获取按钮,所以我不能像使用无线电输入那样使用。我试图通过使用 $(this) 来获得任何属性。但是只是想出了"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 个无线电输入/文本输入)来启动该功能,并且传递的值会使它变得复杂。

你好,我不太明白你在这里想做什么,但我猜你想获取你为每个按钮设置的数据变量的值。

我重新创建了你的场景 编辑 - 更新了 Javascript 代码,现在它似乎按照您的要求工作

HTML

$('.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/>

Javascript

$('.byalpha').on('click', 
    {'letter': function (element) {
            return $(element).data('letter');
        }
    }, 
    function (e) {
        $('#picked_letter').html(e.data.letter(this));
    }
);

这里是工作示例link

http://jsfiddle.net/70fje1mh/2/