1

jQuery について理解を深めようとしていますが、単純な配列と jQuery 配列、および DOM 要素と jQuery 要素を理解するのに苦労しています。

だからここに私がやろうとしている例があります。例は本当に単純ですが、私はいくつかの手を握る必要があります :-p そのため、回答が説明的であることを期待して、要件を詳細に説明します。

IDとの2 つの<select>ドロップダウンがあります。#version#target

ボタンをクリックすると、 の最後から 2 番目の値と同じ名前で、#targetのオプションで選択したいと思います。(アイテムは存在します)#version

例:#versionオプションがあります: a、b、c、x。#targetオプション a、b、c、d、h、m があります。

ボタンをクリックします。起こるべきことは次のとおりです。

  • #version"c"の最後から 2 つ目のオプションを読み取る
  • #target3 番目 (つまり、インデックスは 2)で同じ名前のオプションを見つけます。
  • 選択した値を#target"c" の後の値、つまり "d" (4 番目、インデックス 3) に設定します。

これが例のフィドルです。

最初のステップでは、私はそれを理解したと思います:

var latestVersion = $("#version option").get(-2).text;

//補足: 機能するのに.text機能しないのはなぜ.val()ですか? ああ、.get()DOM 要素を返します
// では、どうすれば jQuery 要素に戻ることができますか?
//$($("#version option").get(-2)).val()動作するが見栄えが悪い

ステップ2では、これを試しました:

var target = $("#target option:contains(latestVersion)");

しかし、うまくいきません。そして、正しい値を探してすべての値を手動で反復するよりも良い方法があるはずです。

ステップ 3: ??.

4

4 に答える 4

2

最初のステップを使用して、次のことを試してください。

$('#button').click(function(){     
var latestVersion = $("#version option").get(-2).text;
//index of LAST-BUT-ONE
var target=$("#target option[value="+latestVersion+"]").index();
//Setting next index value
$("#target").prop("selectedIndex",target + 1);    
});

http://jsfiddle.net/GpBDY/16/

于 2013-10-28T12:33:53.747 に答える
1

nth-childの値を選択し、その値を次のようversionに設定して使用すると、これを行うことができます。target

$('#button').click(function(){     
    var latestVersion = $("#version option:nth-child(3)").text();
    $("#target").val($('#target option[value="'+latestVersion+'"]').next().text());    
});

デモフィドル

于 2013-10-28T11:37:21.833 に答える
1

.val() は option 要素では機能しませんが、select 要素では機能します。

var v = $( "#version" ).val();

ドロップダウン #version で選択された要素を提供します。

次の行は、あなたが望むことをしません:

var target = $("#target option:contains(latestVersion)");

これは、latestVersion が変数の名前としてではなく、値「latestValue」として扱われるためです。変数 latestValue の値を使用するには、次のように文字列の外側に latestValue を配置します。

... contains(" + latestVersion + ")...

jQuery メソッド.next()をステップ 2 のコードと組み合わせて、次のオプション要素の値を取得することに関心があるかもしれません。次の要素がない場合、値は「未定義」になることに注意してください。

于 2013-10-28T11:34:36.433 に答える
0

私はあなたが探していることを理解しているかどうかわかりませんが、次のようなものが欲しいと思います:

$('#button').click(function(){ 
    var arrVersion = $("#version option");

    var latestVersion = $(arrVersion[arrVersion.length  - 2]).val();

    $("#target").val(latestVersion);
   var actualSelected = parseInt($("#target").prop("selectedIndex"));
    $("#target").prop("selectedIndex", actualSelected + 1);
});

http://jsfiddle.net/GpBDY/9/

于 2013-10-28T11:37:53.930 に答える