【问题标题】:jQuery get value of unknown element within table celljQuery获取表格单元格中未知元素的值
【发布时间】:2015-02-24 12:37:34
【问题描述】:

表格单元格可能包含一个 INPUT 元素、一个 SELECT 元素或其他一些元素。我必须从元素中获取值和类属性,以便适当地路由代码。

表格单元格中只有一个元素(但元素类型可能会改变)。

问题:test1 和 test2 没有返回所需的值(表格单元格中元素的类名和值)。

jsFiddle Demo

HTML:

<table id="tbl">
    <tr>
        <td class="pid">12345</td>
        <td class="tbl_vendor"><input class="vi" value="Ikea" /></td>
        <td>Stove</td>
        <td><input class="qty_in" value="1" /></td>
        <td class="del">del</td>
    </tr>
    <tr>
        <td class="pid">38674</td>
        <td class="tbl_vendor">
            <select class="vendSEL">
                <option value="1">C.P.O.</option>
                <option value="2">Knightin</option>
                <option value="3">CanDine</option>
            </select>
        </td>
        <td id="selTD"></td>
        <td><input class="qty_in" value="1" /></td>
        <td class="del">del</td>
    </tr>
</table>

jQuery/javascript:

var $this, qty, thisRowNdx, thisTR, vendorTD;
$(document).on('keyup', '.qty_in', function() {
  $this = $(this);
  qty = this.value;
  thisTR = $this.closest('tr')[0];

  vendorTD = $this.closest('tr').find('.tbl_vendor');
  var currVendorTagname = vendorTD.children()[0].tagName;
  var test1 = vendorTD.children()[0].getAttribute['class'];
  var test2 = vendorTD.children()[0].nodeValue;
  alert('currVendorTagname: ' + currVendorTagname);
  alert('test1: ' + test1);
  alert('test2: ' + test2);
});

【问题讨论】:

  • jQuery/DOM 的全部目的是什么?什么不工作?如果我更新数量你想找到什么?因为您的解决方案可能有效,但似乎过于复杂。
  • 感谢您的来信。我很困惑我可以从 jQuery 对象中获取哪些数据,而不是从基本的 js 元素中获取哪些数据。正如你所知道的,我对 jQ 比对 js 更舒服,并且试图填补一些知识空白。我想我现在已经知道(这部分)了。
  • 不管怎样,你仍然需要澄清你的问题;你的代码是做什么的?回应什么?它在哪里失败,它没有做什么(它应该),它做了什么(它不应该)?关键是让这个问题在未来对其他人有用;如果它只对你有帮助,而其他人无法理解,那么它可能会被关闭为“不清楚你在问什么”。修改和编辑以改进;这样你就有机会帮助别人。
  • 嘿,你在剑桥?你见过约翰伦诺克斯演讲吗?伙计,我非常羡慕你——很想和那个人一起学习数学。我将更新问题以解决您的问题 - 非常感谢。

标签: javascript jquery


【解决方案1】:

只需找到the right reference。或者,这更容易阅读:the Mozilla Developer Network page

感谢对此问题的回答:JavaScript getting an elements class without any libraries

解决方案:

var test1 = vendorTD.children()[0].className;
var test2 = vendorTD.children()[0].value;

Updated jsFiddle


请注意,这应该有效,但没有:

var test1 = vendorTD.children()[0].getAttribute['className'];

【讨论】:

  • vendorTD.children()[0].getAttribute['className'] 不会,也不应该,工作:className 是 DOM 节点的属性,而不是元素的属性,所以试试:@987654329 @
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 2013-05-16
  • 2010-09-27
  • 2011-03-28
相关资源
最近更新 更多