0

私のhtmlには、同じクラスのドロップダウンボックスが複数あります。各入力ボックスから値を取得し<select>、セレクターとして渡します。入力ボックスから取得した値は正しいのですが、ドロップダウン ボックスを選択するのに問題があります。

HTML:

<div id="orange">
    <input type="text" class="hide" value="AM" />
    <select class="ampm">
        <option value="AM">AM</option>
        <option value="PM">PM</option>
    </select>
    <br>
    <input type="text" class="hide" value="AM" />
    <select class="ampm">
        <option value="AM">AM</option>
        <option value="PM">PM</option>
    </select>
    <br>
    <input type="text" class="hide" value="PM" />
    <select class="ampm">
        <option value="AM">AM</option>
        <option value="PM">PM</option>
    </select>
</div>
<div id="apple">
    <input type="text" class="hide" value="AM" />
    <select class="ampm">
        <option value="AM">AM</option>
        <option value="PM">PM</option>
    </select>
    <br>
    <input type="text" class="hide" value="PM" />
    <select class="ampm">
        <option value="AM">AM</option>
        <option value="PM">PM</option>
    </select>
</div>

JS:

$(function () {
$('div').each(function(){
    $(this).find('.hide').each(function () { //inputbox
         $(this).find('.ampm').val($(this).val()); //option                        
         alert($(this).val());
     });    
  });
});

JSFiddle フルコード

4

5 に答える 5

8

find要素内を調べます。選択ボックスが入力に含まれていないため、何も見つかりません。代わりに次のように変更しnextます。

     $(this).next('.ampm').val($(this).val());                         

http://jsfiddle.net/LpsVn/2/

于 2013-03-06T04:21:44.480 に答える
2

これを試して

$(function () {
        $('div .hide').each(function () {
             $(this).next('.ampm').val($(this).val());                         
             console.log($(this).val());
         });    
});

デモ:フィドル.

よりクールなソリューションについては、@wirey のコメントをご覧ください。

$(function() {
    $('div .ampm').val(function() {
                return $(this).prev('.hide').val();
            })
});
于 2013-03-06T04:23:36.737 に答える
0
$(function () {
    $('div').each(function() {
        var $div = $(this);
        $div.find('.hide').change(function() {  //inputs change:
            var newInputVal = $(this).val();
            $div.find('.ampm').val(newInputVal);
        });
    });
});

グループでのこの変更に注意してください。ただし、多くの .ampm が親 div にあります。それが意図したものかどうかわかりません。これには少し遅れましたが、初心者向けの変数で明確にしようとしました。上記の next() の代替手段は、場合によっては少し脆弱かもしれません。また、ぼかしが実際に発射されるときなど、一般的にこれにはいくつかの明らかな懸念があると思います.

http://jsfiddle.net/LpsVn/

于 2013-03-06T04:50:07.330 に答える
0

選択タグは入力の子ではないため、入力タグ内で選択タグを反復処理していましたが、これは不可能です。したがって、入力タグを反復処理してから、次の兄弟選択タグを見つけて、現在の入力タグの値を割り当てるだけです。

$(function () {
$('div').find('input').each(function(){                
alert( $(this).val());
$(this).next('select').val($(this).val());
});
});

http://jsfiddle.net/LpsVn/8/

于 2013-03-06T16:22:03.183 に答える
-1
$("select option").filter(function() {
    return $(this).text() == text1; 
}).attr('selected', true);

正しいオプションをフィルター処理し、selected属性を true に設定します。

于 2013-03-06T04:23:53.570 に答える