我正在创建一项每年进行的调查。为了使它快速,我希望有一个按钮,它将自动选择上一年调查的下拉列表中的答案(这个答案可以作为表中前一个单元格(同一行)的跨度)。因为这个表可以是几百行,所以我不能使用特定的id / name选择器。我想要做的是将超链接之前的跨度存储在变量中,然后使用它来选择超链接后面的单元格中的选项
Jquery的:
<script type="text/javascript">
$(function () {
$("[id$='lbCopy']").click(
function () {
var $prevReason = $(this).parent().prev().children().text();
$(this).parent().next().children('select > option:contains("' + $prevReason + '")').prop("selected", true);
})
});
</script>
HTML:
<td>
<span id="ctl00_body_gvBacklog_ctl02_lblPrevYearReason">Recalcitrant RP</span>
</td>
<td>
<a id="ctl00_body_gvBacklog_ctl02_lbCopy">Copy</a>
</td>
<td>
<select name="ctl00$body$gvBacklog$ctl02$ddlReasonNotClosed" id="ctl00_body_gvBacklog_ctl02_ddlReasonNotClosed">
<option value=""></option>
<option value="Contamination Above Standards">Contamination Above Standards</option>
<option value="Recalcitrant RP">Recalcitrant RP</option>
<option value="Remediation Ongoing">Remediation Ongoing</option>
<option value="SMAC Eligible">SMAC Eligible</option>
<option value="SMAC Eligible w/MW Closure">SMAC Eligible w/MW Closure</option>
<option value="SMAC Eligible w/Notice">SMAC Eligible w/Notice</option>
</select>
</td>
无论出于何种原因,这都行不通。我没有错误,但下拉列表没有被修改。我知道我的选择器是可靠的,因为我可以用它来改变所有下拉菜单的选项,而不是相邻的下拉列表。谢谢你的帮助!
答案 0 :(得分:1)
children
仅选择一级向下的元素,您尝试选择后代,因此请改用find
。
$(this).parent().next().find('select > option:contains("' + $prevReason + '")').prop("selected", true);
答案 1 :(得分:0)
这适用于您的问题的HTML代码:
$(function () {
$("[id$='lbCopy']").click(
function () {
var $prevReason = $(this).prev().text();
$(this).next().find('option:contains("' + $prevReason + '")').prop("selected", true);
})
});
答案 2 :(得分:0)
有很多方法可以做到这一点,对我来说,我会尽量避免在选择器中有变量
$(function () {
$("[id$='lbCopy']").click(
function () {
var $prevReason = $(this).parent().prev().children().text();
$(this).parent().next().find('option').filter(function(){
return $(this).html() == $prevReason;
}).prop("selected", true);
})
});