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

时间:2015-03-19 04:58:47

标签: javascript jquery events button attr

我需要获取单击按钮的值或任何其他attr,才能在函数中将其用作event.data

以下是设置:

  • 从" A"得到26个带有值/文字的按钮。到" Z"作为字母表列表的控制。
  • 每个按钮都有相同的类=" byalpha"
  • 每个按钮启动相同的ajax-search-function,它从sql获取json-data以创建列表
  • 单击class =" byname"唯一值(例如" B")应作为event.data.letter传递给函数

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

$( "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个无线电输入/文本输入)来启动功能,传递的值会使它变得复杂。

1 个答案:

答案 0 :(得分:0)

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

我重新创建了你的场景 编辑 - 更新了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/>
&#13;
&#13;
&#13;

的Javascript

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

这是工作样本的链接

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