如图,关于jquery parent().parent() 的筛选问题,具体请看下面

<tr onclick="setRowIndex(this);" style='display:none' >
<td >
<select style="width: 100%;" name="materialName" class="button_ui">
<option value="盘纸">盘纸</option>
<option value="水松纸">水松纸</option>
</select>
</td>
<td >
<span id="iscorrespond" onclick="swap(this);">√</span>
</td>
<td >
<span id="isbumps" onclick="swap(this);">√</span>
</td> 
<td >
<input type="text" name="sendid" value="" style="font-size:12pt;" size="7"/>
</td>
<td >
<input type="text" name="checkid" value="" onclick="" style="font-size:12pt;background-color=#EEEEE7;"size="7" readonly disabled/>
</td>
<td >
<input type="text" name="checktime" value="" onclick="gettime(this)" style="width:160px;font-size:12pt;background-color=#EEEEE7;" size="7" readonly disabled/>
</td>
<td>
<select style="width: 100%;" name="status" class="button_ui" disabled>
<option value="0">新增</option>
<option value="1">送料完成</option>
<option value="2">核对完成</option>
</select>
</td>
<td>
<input type="button" value="保存" onclick="save(this);"/>
</td>
</tr>

//确定&保存
function save(v)
{
if(!window.confirm("确认保存?")){ return; }
//获取本次保存的内容
var dv = v;
var $v = $(dv);
//材料名称
var materialName = $v.parent().parent().find("select").val();
alert(materialName);
}

上面是正确的代码

谁能告诉我这个 为什么就不行。给这个 select 加 id,或者 通过 class 来筛选同样都不行。求解
var materialName = $v.parent().parent("select [name='materialName ']").val()
图片是 jquery手册上的例子
难道是因为 有2层 parent 所以就不行了?不能这样把?
var materialName = $v.parent().parent("select").html()
也都试过



紫衣仙女
浏览 227回答 2
2回答

青春有我

$v.parent().parent("select").html()这样写也找不到!$v.parent().parent()是tr.所以无论你parent()中的参数除了写tr或不写外,其他节点都会取不到的。而例子中$v.parent().parent().find("select").val();使用find在当前tr中查找select的话,就可以找到2个,然后val()会默认返回第一个的val();如果要改,则:$v.parent().parent().find("select[name='materialName']").val();跟例子中的一样。还有其他写法:$v.parents('tr:first').find("select:first").val();$v.parent().siblings().find("select[name='materialName']").val();$v.parent().siblings().children("select[name='materialName']").val();等等~

白猪掌柜的

用closest,parent只能向上取,所以$v.parent().parent()是tr这一层,而tr及其上层没有select [name='materialName]自然找不到,所以错了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
JQuery