0

非表示の div の下に選択ボックスがあります。ある場所をクリックすると選択ボックスが正しいオプションで表示される機能を実行しましたが、うまくレンダリングされず、コントロールが正しく機能しません。これはコードです。

$(function () {
    $('.NewDiv').click(function () {
        $(this).append($('#MySelectBox'));
        $('#MySelectBox').val($(this).attr('value'));
    });
});

<select id="MySelectBox>
    <option...
</select>

私は追加、html、およびテキストを試しましたが、それらはすべて選択ボックスをレンダリングしますが、Chrome と Firefox で正しく動作しないことが証明されています。

ありがとう!

4

5 に答える 5

2

この問題が発生する理由は、イベントを div に関連付けているためです。この div には現在、選択ボックスが含まれています。したがって、オプションを選択すると、値が読み取られないため、オプションが「0」に変更されます。

この例では、問題を修正します。

于 2012-09-18T07:09:10.953 に答える
1

私が見る 1 つの問題は、現在のコードが を に配置しselectているdivため、 のクリック イベントselectにより操作が繰り返されることです。

壊れた例: http://jsfiddle.net/XnWyY/

おそらくこれはあなたが探しているものです(クリックして移動selectdiv、 new を追加しますoption):http://jsfiddle.net/XnWyY/1/

または、クリックして表示し、新しいものを追加しますoption: http://jsfiddle.net/XnWyY/2/

于 2012-09-18T06:49:24.567 に答える
0

以下で行を変更します。

$(this).append($('#MySelectBox').html());
于 2012-09-18T06:49:00.900 に答える
0

div を非表示にしてから、トリガーがクリックされたらそれを show() する方が簡単な場合があります。関連するコードはhttp://jsfiddle.net/L67LT/1/にあります

$('#MySelectBox').hide();
var externalValue="Fighter";
$(function () {
    $('#newDiv').click(function () {
        console.log("clicked!");
        var box = $('#MySelectBox');
        box.show(); box.val(externalValue);
    });
});

using が失敗したことにも注意してください$(this).attr('value')(この場合は、newDivという属性を持たない divへの参照ですvalue)。

于 2012-09-18T07:13:43.323 に答える
-1

申し訳ありませんが、質問を誤解してコードを修正したと思います:

$('#newDiv').click(function () {
    $(this).append($('#MySelectBox'));
    $('#MySelectBox').val($(this).attr('value'));
    $('#MySelectBox').bind("click", function(e) {
        e.stopPropagation();
    });
});

フィドル: http://jsfiddle.net/hghNJ/1/

于 2012-09-18T07:23:27.870 に答える