1

我试图了解 jQuery,但我无法弄清楚普通数组与 jQuery 数组,以及 DOM 元素与 jQuery 元素。

所以这是我尝试做的一个例子。这个例子真的很简单,但我需要一些手把手:-p 所以我会详细说明我的要求,希望答案反过来是描述性的。

我有两个<select>下拉列表,带有 ID#version#target.

当我单击一个按钮时,我想在后面选项中进行选择,#target该选项与. (该项目将存在)#version

示例:#version具有选项:a、b、c、x。#target有选项 a,b,c,d,h,m。

我点击按钮。应该发生的是:

  • 阅读最后一个选项#version:“c”
  • 找到同名的选项#target:第 3 个(即索引为 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)");

但它不起作用。还有一种比手动迭代所有值来搜索正确值更好的方法。

第三步:???。

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

.val() 不适用于选项元素,但它确实适用于选择元素:

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