首页 > 解决方案 > 尝试访问 jquery 类以执行操作但不能

问题描述

我正在尝试访问一个 jQuery 类,以便可以将我的 HTML 表格数据下载为文本格式。但是,我有一列是带有选项的选择器,而不仅仅是输入。该表是动态生成的。我知道如何获得该值,但我无法使用正确的逻辑。现在我的选择框看起来像这样:

tbl +='<td ><select id="status" name="status" class="status" data id="'+row_id+'">';
                    tbl += '<option' + (val['IncludeThis'] == "yes" ? ' selected' : '') + '>yes</option>';
                    tbl += '<option' + (val['IncludeThis'] == "no" ? ' selected' : '') + '>no</option>';
tbl += '</select></td>';

这是 jquery 部分,我试图只获取选择值以及其他值

$('tbody tr').each(function (idx, elem)
{
var elemText = [];
$(elem).children('td').each(function (childIdx, childElem)
{
  const el = $(childElem);
  if ($(childElem).hasClass("status"))
  {
      elemtext.push(el.find('option:selected').text());
  }
  else {
  elemText.push($(childElem).text());
  }
});

但是,.hasClass 没有工作,.is 也没有。有什么建议么?

标签: jquery

解决方案


$(childElem) 是 td 本身,所以 hasClass 检查 td 是否有任何具有名称状态的类。要查找选择框是否具有任何类状态,您可以尝试以下操作:

if ($(childElem).find('select').length > 0 && $(childElem).find('select').hasClass("status")) {

或者

if ($(childElem).find('.status').length > 0) {

您提供的语法也有一些问题。

1)选择框中的数据ID之间不应有任何差距。它导致选择框有两个 id。

2)

if ($(childElem).hasClass("status"))
  {
      elemtext.push(el.find('option:selected').text());
  }

没有定义像elemtext这样的变量。您已定义elemText

3) 如果您的选择框多于 id="status" 行,则无法将它们分配给其中的每一个。


推荐阅读