Javascript 当我尝试访问元素的数据时,为什么jQuery返回未定义的?

Javascript 当我尝试访问元素的数据时,为什么jQuery返回未定义的?,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试访问复选框的data属性,以便传递到PHP脚本以更新我的数据库 HTML如下所示: <input type="checkbox" data-entid="1"onchange="updateOrDeleteEntitlements()" checked> 行varent=$this.data'entid';应该存储复选框中保存的数据,以便我可以在AJAX中传递它,但返回未定义的数据 花了大约一个小时尝试一些稍有不同的东西,但似乎没有任何效果。我在代码的其他地方也使用了同

我正在尝试访问复选框的data属性,以便传递到PHP脚本以更新我的数据库

HTML如下所示:

<input type="checkbox" data-entid="1"onchange="updateOrDeleteEntitlements()" 
checked>
行varent=$this.data'entid';应该存储复选框中保存的数据,以便我可以在AJAX中传递它,但返回未定义的数据

花了大约一个小时尝试一些稍有不同的东西,但似乎没有任何效果。我在代码的其他地方也使用了同样的东西,但是从tr而不是输入中提取数据,所以我完全迷糊了

非常感谢您的任何帮助

这并不是指它所指的窗口对象的复选框元素。您需要在内联更改事件处理程序和方法中传递当前元素,即,接受它,然后使用它检索数据

HTML

我建议您使用不引人注目的事件处理技术。使用方法附加事件处理程序。使用它,这将引用复选框,因此您的代码将起作用

HTML

$'.myCheckbox'。在“更改”上,更新订单删除权限; 函数更新或删除权限{ var ent=$this.data'entid'; 控制台 } 这不引用它引用的窗口对象的复选框元素。您需要在内联更改事件处理程序和方法中传递当前元素,即,接受它,然后使用它检索数据

HTML

我建议您使用不引人注目的事件处理技术。使用方法附加事件处理程序。使用它,这将引用复选框,因此您的代码将起作用

HTML

$'.myCheckbox'。在“更改”上,更新订单删除权限; 函数更新或删除权限{ var ent=$this.data'entid'; 控制台 }
您在没有上下文的情况下调用函数,因此这不是您认为它应该是的元素

您可以按如下方式设置上下文:

<input type="checkbox" data-entid="1" onchange="updateOrDeleteEntitlements.call(this)">

根据需要调整传递给$的选择器。

您在没有上下文的情况下调用函数,因此这不是您认为应该是的元素

您可以按如下方式设置上下文:

<input type="checkbox" data-entid="1" onchange="updateOrDeleteEntitlements.call(this)">
根据需要将传递的选择器调整为$。

在此行中

var ent = $(this).data('entid');
您打算获取复选框的data entid属性,但这不是您的复选框。未经检验的建议:

<input type="checkbox" data-entid="1"onchange="updateOrDeleteEntitlements(this)" 
checked>
在这一行

var ent = $(this).data('entid');
您打算获取复选框的data entid属性,但这不是您的复选框。未经检验的建议:

<input type="checkbox" data-entid="1"onchange="updateOrDeleteEntitlements(this)" 
checked>

脚本无法了解$this是什么脚本无法了解$this是什么
$('input[type=checkbox]').change(updateOrDeleteEntitlements);
var ent = $(this).data('entid');
<input type="checkbox" data-entid="1"onchange="updateOrDeleteEntitlements(this)" 
checked>
 function updateOrDeleteEntitlements(context) {
    var role = $('#selectedRole').val();
    var ent = $(context).data('entid');
    var binMe = '';

     $.ajax({
      url: 'ajax/update_delete_entitlements.php',
      type: 'post',
      data: {'role': $role, 'ent': ent, 'delete': $binMe},
      success: function(data) {
        console.log(data);
      }
    }); 
 }