JQuery:从DropDownList中选择Option,给定表中相邻单元格的值

时间:2013-05-30 14:18:48

标签: jquery

我正在创建一项每年进行的调查。为了使它快速,我希望有一个按钮,它将自动选择上一年调查的下拉列表中的答案(这个答案可以作为表中前一个单元格(同一行)的跨度)。因为这个表可以是几百行,所以我不能使用特定的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>

无论出于何种原因,这都行不通。我没有错误,但下拉列表没有被修改。我知道我的选择器是可靠的,因为我可以用它来改变所有下拉菜单的选项,而不是相邻的下拉列表。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

children仅选择一级向下的元素,您尝试选择后代,因此请改用find

$(this).parent().next().find('select > option:contains("' + $prevReason + '")').prop("selected", true);

答案 1 :(得分:0)

这适用于您的问题的HTML代码:

http://jsfiddle.net/ehrGk/

$(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); 

            })
     });