2013-05-30 53 views
1

我正在創建一項每年進行的調查。爲了使速度更快,我希望有一個按鈕,可以自動選擇上一年度調查的下拉列表中的答案(此答案在表中的前一個單元格(同一行)中可以跨度顯示)。由於此表可能有數百行,因此我無法使用特定的ID /名稱選擇器。我所試圖做的是存儲位於一個變量的超級鏈接前的跨度,然後使用該超鏈接JQuery:從DropDownList中選擇選項給定表中相鄰單元格的值

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

我們應該假設您的腳本位於頁面上的選擇之後嗎? – crush

+0

腳本位於部分。 – Lukeg199

回答

1

children只選擇向下一級的元素,您試圖選擇後代,所以請改用find

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

修好了!謝謝! – Lukeg199

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); 
    }) 
}); 
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); 

      }) 
    }); 
相關問題