2

毎年実施しているアンケートを作成しています。速くするために、前年の調査からドロップダウンリストで回答を自動的に選択するボタンが必要です (この回答は、表の前のセル (同じ行) のスパンとして利用できます)。このテーブルは何百もの行になる可能性があるため、特定の id/name セレクターを使用できません。私がやろうとしているのは、ハイパーリンクの前にあるスパンを変数に格納し、それを使用してハイパーリンクに続くセルのオプションを選択することです

Jクエリ:

<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>

何らかの理由でこれは機能しません。エラーは発生しませんが、ドロップダウンリストは変更されません。隣接するドロップダウンだけでなく、すべてのドロップダウンのオプションを変更するために使用できるため、セレクターがしっかりしていることはわかっています。助けてくれてありがとう!

4

3 に答える 3

1

children1 レベル下の要素のみを選択します。子孫を選択しようとしているので、find代わりに使用してください。

$(this).parent().next().find('select > option:contains("' + $prevReason + '")').prop("selected", true);
于 2013-05-30T14:24:02.133 に答える
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);
    })
});
于 2013-05-30T14:27:14.090 に答える
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); 

            })
     });
于 2013-05-30T14:38:22.537 に答える