日期:2014-05-16  浏览次数:20360 次

JQUEYR返回每一列第二个单元格的值

//能得到值
        function checkType() {            
                $("#ouChildsTable tbody tr").each(function () {
                alert($(this).find("td").eq(1).html());
            });
            return false;

        }

//不能得到值
        function checkType() {  
            var jTBody = $("#ouChildsTable tbody").children("tr");
            for (var i = 0; i < jTBody.length; i++ ) {
                alert(jTBody[i].find("td").eq(1).html());
            }
       }

为什么第二种方式运行,报错 对象不支持find属性或方法。

------解决方案--------------------
改成下面试下

 alert(jTBody.eq(i).find("td").eq(1).html());

------解决方案--------------------
function checkType() {  
            var jTBody = $("#ouChildsTable tbody").children("tr");
            for (var i = 0; i < jTBody.length; i++ ) {
                alert($(jTBody[i]).find("td").eq(1).html());
            }
       }
------解决方案--------------------
jTBody[i].find("td").eq(1).html()

这样取值得到的是HTML DOM对象,而不是jquery包装过的对象,DOM对象没有find方法,jq的才有。

所以需要jTBody.eq(i)得到的是jq对象
------解决方案--------------------
jTBody[i]是指第i个tr,
而$(jTBody[i])或$(this)是指第i个的tr内容,这样就可以找到。
------解决方案--------------------
不是。。得到的jq包装后的jq对象数组

楼主认真看下api,什么方法返回什么对象,返回DOM对象使用get方法或者[]数组下标操作,其他方法返回的都是jq包装后的对象
------解决方案--------------------
引用:
引用:jTBody[i].find("td").eq(1).html()

这样取值得到的是HTML DOM对象,而不是jquery包装过的对象,DOM对象没有find方法,jq的才有。

所以需要jTBody.eq(i)得到的是jq对象

那么 children得到的是一个 DOM对象么?
不是,可以这样验证一下,alert($.prototype.isPrototypeOf($("#ouChildsTable tbody").children("tr")));