【问题标题】:Grabbing unique field from different checkboxes with same class on jQuery .change在 jQuery .change 上从具有相同类的不同复选框中获取唯一字段
【发布时间】:2016-03-14 13:02:49
【问题描述】:

为了提高效率,我正在尝试设计一个 jQuery 函数,该函数可由共享一个公共类的不同复选框使用。当用户更改其中一个复选框时,该函数由.change 事件触发。诀窍是,我需要捕获已更改复选框的唯一数据。

我的 HTML:

Field 123: <input type="checkbox" name="pubfield" value="123" class="pubfield"><br>

Field 999: <input type="checkbox" name="pubfield" value="999" class="pubfield"><br>

我的 jQuery 函数:

$(function(){
    $( ".pubfield" ).change(function() {
        var change_field    = $('.pubfield').val();
        var showit          = $('input.pubfield').prop('checked'); /* true or false */
        alert('Updating field ' + change_field + ' to '  + showit);
    }); 
});

可以预见,该函数仅捕获第一个复选框字段的输入值和复选框状态,即使第二个已更改。如何重复使用相同的功能,但仅从正在更改的复选框中捕获唯一数据?

【问题讨论】:

  • $(this).val(); 是否有效

标签: javascript jquery


【解决方案1】:

试试:

$(function(){
   $( ".pubfield" ).change(function() {
       var change_field    = $(this).val();
       var showit          = $(this).prop('checked'); /* true or false */
       alert('Updating field ' + change_field + ' to '  + showit);
   }); 
});

元素$(this)代表触发事件的元素...

【讨论】:

  • 漂亮!并在八分钟内得到答案。谢谢迭戈!
【解决方案2】:

您必须在事件处理程序中使用this,而不是再次调用选择器:

$(function(){
    $( ".pubfield" ).change(function() {
        var change_field    = $(this).val();
        var showit          = $(this).prop('checked'); /* true or false */
        alert('Updating field ' + change_field + ' to '  + showit);
    }); 
});

【讨论】:

  • 我不这么认为,这就是正确的答案。 :)
  • @UmerHayyat 答案是相同的,但我是自己从 OP sn-p 写的,DIEGO CARRASCAL 更快
  • 也许我问了一个非常明显的问题。我确实试图找出答案,但我找到的答案似乎将所有输入都包含在一个数组中。
  • 别担心,质疑是我们所有人学习的方式,我说这是正确的答案,不是因为它很简单,而是因为 jQuery 就是这样做的……文档和示例有时也很令人困惑。
猜你喜欢
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2019-03-10
  • 2015-02-17
  • 1970-01-01
相关资源
最近更新 更多