0

ユーザーがアイテムをクリックしたときに表示される次の選択ドロップダウンがあります。

        $(this).html($("<select/>", {
          class: 'sel',
        }).append($("<option/>", { text: "WIP" }))
          .append($("<option/>", { text: "C" }))
          .append($("<option/>", { text: "A" }))
          .append($("<option/>", { text: "AR" }))
          .append($("<option/>", { text: "NS" }))
        );

さらに、status「WIP」、「C」、「A」、「AR」、または「NS」のいずれかとして定義されているという変数があります。

status = trim(($(this).text()));

selectドロップダウンをクリックするoption == statusとが選択されるようにしたいと思います。例えば:

status = "WIP"
<select class="sel">
     <option selected="selected">WIP</option>
     <option>C</option>
     ...
</select>        
4

3 に答える 3

2

私が質問を理解する方法では、ユーザーがクリックするにオプションが選択されるoptionようにデフォルトを設定する必要があります。

これを行う方法は次のとおりです。

var status = "WIP";

$("<select/>", {
    class: 'sel',
})
.append( $("<option/>", { text: "WIP" }) )
.append( $("<option/>", { text: "C" }) )
.append( $("<option/>", { text: "A" }) )
.append( $("<option/>", { text: "AR" }) )
.append( $("<option/>", { text: "NS" }) )
.val( status )
.appendTo(this);

select要素全体appendをDOMに送信する前に作成する必要があることに注意してください。DOMとの対話は非常にコストがかかるため、これはパフォーマンスにとってはるかに優れています。

于 2012-08-10T17:59:15.197 に答える
2

オプションのテキスト値を配列に入れると、コードの繰り返しを減らすこともできます。

var options = ['WIP','C','A','AR','NS'];
var menu = $('<select>',{class:'sel'});

$.each(options,function(i,text){
    menu.append($('<option>',{text:text}));
});

menu.val(status).appendTo(this);
于 2012-08-10T18:03:43.247 に答える
0

ユーザーが選択をクリックしたときに保存された値を選択するためにできることは次のとおりです。

フィドル。

http://jsfiddle.net/TRCWh/

コード

<div id = "hello"></div>

var select = "A";
$('#hello').html($("<select/>", {
          class: 'sel',
        }).append($("<option/>", { text: "WIP" }))
          .append($("<option/>", { text: "C" }))
          .append($("<option/>", { text: "A" }))
          .append($("<option/>", { text: "AR" }))
          .append($("<option/>", { text: "NS" }))
                );

$(document).on("click",".sel",function(){
    $(this).val(select);
})

注:私はしばらくの間、受け入れられているコーディング手法を無視してきました(一部の人が言うかもしれませんが)。あなたの問題に迅速な修正の答えを与えるためだけに:)

于 2012-08-10T18:15:29.107 に答える