$(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();
})
})
试问,你这里的$(this)代表的是你的$("#btnAdd")还是checkbox个体?
$check
@灬丶: 我觉得是$("#btnAdd")。你这样试试。$check.each(function (i,o) {
v = $(o).parents("tr").find("td").eq(1).text().trim();
})
@贫民窟大侠: 如果是这种问题,应该是得不到值而不是出现
@灬丶: 你调试了吗?$(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();
依次调试。看看错在哪一步!
不同的对象所拥有的属性和扩展方法也不一致。你只能逐步调试。
@贫民窟大侠: 我把后面两个去掉就不会出错了
@灬丶: $(this).parents("tr").find("td").eq(1)你这一步肯定有问题,你是要找到第一个td吗?
如果是,直接find("td:first") 试试。
@灬丶: $(this).parents("tr").find("td:eq(1)")那就这样。
@贫民窟大侠: 不行
@灬丶: 谷歌调试。看你每一步的对象是什么。addtowatch检查。
@贫民窟大侠:恩
@灬丶: 比较挫的方式换一换Jquery版本。这个不太确定,毕竟早期的版本,还是有很多用法不一样的。
因为该是eq(0)?索引不是都是从零开始么?
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);
应该是从第二个
@灬丶: 你是找id的那个单元格是么?
$(this).parents("tr").find("td").eq(1).text().trim();
在不熟悉的情况下,你可以先挨个看看是不是你预想的结果,比如先确定$(this)是不是checkbox,然后确定parents对不对,等等。。。
另外,数组我看jq的文档一般是这么用的啊:
$check.each(item,function (index) {
$(item)
})
@顾晓北: alert出来的都是[object Object]
@灬丶: 这个是自然,只要是对象都是这个吧,我的意思是在调试状态下看看吧。
@顾晓北: 看出来了,把第二个parent改为find就好了,但不知道两个什么区别
我怎么记得trim()函数的用法是 $.trim(str) 呢。。。。
以前就行,现在却不行了
@灬丶: trim可以这么用的。没毛病。写法不一致而已,或者就是你用的Jquery版本不对。不然你换一个Jquery版本试试。
@灬丶: 我人有点傻,不过我这么写怎么就没有报错呢,不能上传图片,这是从控制台复制过来的,将就看看,用$.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> 11 qqq ,</td>, <td> 12 qqq ,</td>, <td> 13 qqq ,</td>]
$check.eq(0).parents("tr").find("td").eq(2)
[<td> 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 ,"
@非梧不栖: 我已经弄好了,把第二个parent改为find就好了
@灬丶: 表示并不能懂
@非梧不栖: v = $(this).parents("tr").find("td").eq(1).text();这样就好了