首页 新闻 会员 周边 捐助

红色部分提示对象不支持属性或方法

0
悬赏园豆:5 [待解决问题]

$(function () {
$("#btnAdd").click(function () {
var v = "";
var id;
var $check = $("#data :checkbox:checked");
$check.each(function () {
v = $(this).parents("tr").find("td").eq(1).text().trim();
})
})

灬丶的主页 灬丶 | 初学一级 | 园豆:3
提问于:2016-09-19 14:22
< >
分享
所有回答(3)
0

试问,你这里的$(this)代表的是你的$("#btnAdd")还是checkbox个体?

大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:31

$check

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:31

@灬丶: 我觉得是$("#btnAdd")。你这样试试。$check.each(function (i,o) {
v = $(o).parents("tr").find("td").eq(1).text().trim();
})

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:32

@贫民窟大侠: 如果是这种问题,应该是得不到值而不是出现

对象不支持属性或方法

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:34

@灬丶: 你调试了吗?$(this)确定是$("#btnAdd")这个对象吗?如果是,你用谷歌调试一下。

$(this).parents("tr")

$(this).parents("tr").find("td")

$(this).parents("tr").find("td").eq(1)

$(this).parents("tr").find("td").eq(1).text()

$(this).parents("tr").find("td").eq(1).text().trim();

依次调试。看看错在哪一步!

不同的对象所拥有的属性和扩展方法也不一致。你只能逐步调试。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:38

@贫民窟大侠: 我把后面两个去掉就不会出错了

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:38

@灬丶: $(this).parents("tr").find("td").eq(1)你这一步肯定有问题,你是要找到第一个td吗?

如果是,直接find("td:first") 试试。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:40

@灬丶: $(this).parents("tr").find("td:eq(1)")那就这样。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:43

@贫民窟大侠: 不行

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:46

@灬丶: 谷歌调试。看你每一步的对象是什么。addtowatch检查。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:50

@贫民窟大侠:恩

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:51

@灬丶: 比较挫的方式换一换Jquery版本。这个不太确定,毕竟早期的版本,还是有很多用法不一样的。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:52
0

因为该是eq(0)?索引不是都是从零开始么?

顾晓北 | 园豆:10898 (专家六级) | 2016-09-19 14:38

s += "<tr>";
s += "<td><input type='checkbox' /></td>";
s += "<td>" + o.Id + "</td>";
s += "<td>" + o.Code + "</td>";
s += "<td>" + o.Name + "</td>";
s += "<td>" + o.Desc + "</td>";
s += "<td>" + o.Price + "</td>";
s += "<td><input type='text'/> </td>";
s += "</tr>";
// $("#data tr:gt(0)").remove();
$("#data").append(s);

应该是从第二个

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:41

@灬丶: 你是找id的那个单元格是么?

$(this).parents("tr").find("td").eq(1).text().trim();

在不熟悉的情况下,你可以先挨个看看是不是你预想的结果,比如先确定$(this)是不是checkbox,然后确定parents对不对,等等。。。

另外,数组我看jq的文档一般是这么用的啊:

$check.each(item,function (index) {

  $(item)

})

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-19 15:00

@顾晓北: alert出来的都是[object Object]

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 15:05

@灬丶: 这个是自然,只要是对象都是这个吧,我的意思是在调试状态下看看吧。

支持(0) 反对(0) 顾晓北 | 园豆:10898 (专家六级) | 2016-09-19 15:11

@顾晓北: 看出来了,把第二个parent改为find就好了,但不知道两个什么区别

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 15:15
0

我怎么记得trim()函数的用法是    $.trim(str)   呢。。。。

非梧不栖 | 园豆:211 (菜鸟二级) | 2016-09-19 14:43

以前就行,现在却不行了

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 14:49

@灬丶: trim可以这么用的。没毛病。写法不一致而已,或者就是你用的Jquery版本不对。不然你换一个Jquery版本试试。

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-09-19 14:51

@灬丶: 我人有点傻,不过我这么写怎么就没有报错呢,不能上传图片,这是从控制台复制过来的,将就看看,用$.trim(str)和str.trim()都没报错,JQ版本超低。。。。

var $check = $("#data :checkbox:checked");
undefined
var $check = $("#data :checkbox:checked");
undefined
$check
[<input type=​"checkbox">​, <input type=​"checkbox">​]
$check.eq(0)
[<input type=​"checkbox">​]
$check.eq(0).parents("tr").find("td")
[<td>​<input type=​"checkbox">​</td>​, <td>​
​</td>​, <td>​&nbsp;11 qqq ,​</td>​, <td>​ 12 qqq ,​</td>​, <td>​ 13 qqq ,​</td>​]
$check.eq(0).parents("tr").find("td").eq(2)
[<td>​&nbsp;11 qqq ,​</td>​]
$check.eq(0).parents("tr").find("td").eq(2).text()
" 11 qqq ,"
$check.eq(0).parents("tr").find("td").eq(2).text().trim()
"11 qqq ,"

$.trim($check.eq(0).parents("tr").find("td").eq(3).text())
"12 qqq ,"

支持(0) 反对(0) 非梧不栖 | 园豆:211 (菜鸟二级) | 2016-09-19 15:18

@非梧不栖: 我已经弄好了,把第二个parent改为find就好了

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 15:19

@灬丶: 表示并不能懂

支持(0) 反对(0) 非梧不栖 | 园豆:211 (菜鸟二级) | 2016-09-19 15:30

@非梧不栖:  v = $(this).parents("tr").find("td").eq(1).text();这样就好了

支持(0) 反对(0) 灬丶 | 园豆:3 (初学一级) | 2016-09-19 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册