Javascript 从td获取数据属性返回未定义
我不确定这是否正确,但我正在尝试从Javascript 从td获取数据属性返回未定义,javascript,jquery,Javascript,Jquery,我不确定这是否正确,但我正在尝试从td而不是tr获取data属性。我已经有了数据id属性 试试这个 var curr_row = $(this).parent('tr').attr('data-id'); 试试这个 var curr_row = $(this).parent('tr').attr('data-id'); 很难理解这个代表什么。 但如果输入了$(此),则应为: var curr_row = $(this).parents('tr').attr('data-id'); var
td
而不是tr
获取data
属性。我已经有了数据id属性
试试这个
var curr_row = $(this).parent('tr').attr('data-id');
试试这个
var curr_row = $(this).parent('tr').attr('data-id');
很难理解这个
代表什么。
但如果输入了$(此)
,则应为:
var curr_row = $(this).parents('tr').attr('data-id');
var curr_comp = $(this).parent().data('company'); //<-- parent() added
var curr_row = $(this).parent('tr').attr('data-id');
var curr_comp = $(this).data('company');
很难理解这个代表什么。 但如果输入了
$(此)
,则应为:
var curr_row = $(this).parents('tr').attr('data-id');
var curr_comp = $(this).parent().data('company'); //<-- parent() added
var curr_row = $(this).parent('tr').attr('data-id');
var curr_comp = $(this).data('company');
链接的parent()
调用在DOM中的位置过高,无法获取父tr
元素。相反,您可以使用closest()
。还要注意,使用data()
检索数据属性是更好的做法。试试这个:
var $row = $(this).closest("tr");
var rowid = $row.data('id');
var company = $(this).closest('td').data('company');
这里有一个完整的例子
$('.expandlink_admin').on('click', function() {
var $row = $(this).closest("tr");
var rowid = $row.data('id');
var company = $(this).closest('td').data('company');
$.ajax({
url: '/manager/administrator/users/count_agents',
type: 'POST',
dataType:'json',
data: {
id: rowid
},
cache: false,
success: function(result) {
$(".subtable").each(function() { //loop through each row
if ($("[type='hidden']", this).val() == rowid) {
$(this).show();
$row.find('.expandlink_admin').hide();
$row.find('.shrinklink_admin').show();
}
});
}
});
});
链接的parent()
调用在DOM中的位置过高,无法获取父tr
元素。相反,您可以使用closest()
。还要注意,使用data()
检索数据属性是更好的做法。试试这个:
var $row = $(this).closest("tr");
var rowid = $row.data('id');
var company = $(this).closest('td').data('company');
这里有一个完整的例子
$('.expandlink_admin').on('click', function() {
var $row = $(this).closest("tr");
var rowid = $row.data('id');
var company = $(this).closest('td').data('company');
$.ajax({
url: '/manager/administrator/users/count_agents',
type: 'POST',
dataType:'json',
data: {
id: rowid
},
cache: false,
success: function(result) {
$(".subtable").each(function() { //loop through each row
if ($("[type='hidden']", this).val() == rowid) {
$(this).show();
$row.find('.expandlink_admin').hide();
$row.find('.shrinklink_admin').show();
}
});
}
});
});
$(文档).ready(函数(){
//$(“#dvTable”).hide();
$(“#btnGenerate”)。单击(函数(){
深交所=“”
szTr=szTr+“第一”
szTr=szTr+“公司”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
$(#display tbody')。追加(szTr);
});
$('body')。在('click','expandlink_admin',函数(){
var curr_row=$(this.parent().parent('tr').attr('data-id');
警报(当前行)
});
});
$(文档).ready(函数(){
//$(“#dvTable”).hide();
$(“#btnGenerate”)。单击(函数(){
深交所=“”
szTr=szTr+“第一”
szTr=szTr+“公司”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
szTr=szTr+“”
$(#display tbody')。追加(szTr);
});
$('body')。在('click','expandlink_admin',函数(){
var curr_row=$(this.parent().parent('tr').attr('data-id');
警报(当前行)
});
});
此是指什么?查看整个事件处理程序会有所帮助。$(this).最近('tr').attr('data-id')
请尝试以下方法,单击此按钮将获得父行及其attr
您需要为问题提供更多上下文,此代码段放在何处?抱歉,不知道信息不够。我已经从data-id中获得了正确的项目。我想从位于TDA的data company中获得公司名称。感谢您更新此问题-我为您添加了一个答案。此是指什么?查看整个事件处理程序会有所帮助。$(this).最近('tr').attr('data-id')
请尝试以下方法,单击此按钮将获得父行及其attr
您需要为问题提供更多上下文,此代码段放在何处?抱歉,不知道信息不够。我已经从data-id获得了正确的项目。我想从位于TDA的data company获得公司名称。感谢您更新问题-我为您添加了一个答案。我已经更新了代码$这是指正在被点击的td。您使用$('.expandlink_admin')。在('click',function(){
。在您的代码中expandlink_admin
是input
内部td
所以$(此)
指input
。您必须使用:var curr row=$(此)。家长('tr').attr('data-id');var curr=(this).parent().data('company');
我已经更新了代码。$这是指正在被点击的td。你使用$('.expandlink_admin')。在('click',function(){
。在你的代码中expandlink_admin
是内部td
所以$(这)
指的是input
。您必须使用:var curr\u row=$(this).parents('tr').attr('data-id');var curr\u comp=(this).parent().data('company'))
Hi,谢谢你的帮助。我已经更改了它,ID出现了。但是,该公司仍然没有出现。它仍然说undefinedWhat specific is not working?你检查过控制台有没有错误吗?我已经更新了问题中的代码。嗯,我可以问一下为什么有些变量后面有$吗?这只是一个命名约定,用来表示变量Ble包含一个jQuery对象。您好,我再次更新了代码。但是,由于某些原因,控制台只是打印了id。您好,谢谢您的帮助。我已经更改了它,id出现了。但是,该公司仍然没有出现。它仍然说undefinedWhat特别不起作用?您检查了控制台的错误吗?我已经在q中更新了我的代码uestion.嗯,我可以问一下为什么有些变量后面有$吗?这只是一个命名约定,表明变量包含jQuery对象。您好,我再次更新了代码。但是,出于某些原因,控制台只是打印了id。为什么您需要为同一个问题发布两个答案?@guradio仍然是海报ddnt响应为什么您需要发布同一个问题有两个答案?@guradio仍然是海报ddnt的回应者