jQuery中选择更改的事件处理不会返回当前selectedIndex

时间:2011-10-17 09:44:19

标签: javascript jquery

我正在尝试执行以下操作:使用jquery显示下拉列表,其结构类似于:

  • 添加元素
  • 元素1
  • 元素2

现在,我想要有以下行为:用户查看“添加元素”并单击它。然后,他选择其中一个元素,调用一些函数,然后下拉选择返回标题“添加元素”。

这是我希望的工作:

$('#elementselect').change(function(e) {            
  selectedIndex = $("#gadgetselect").attr('selectedIndex');

  if (selectedIndex != 0) {
    var selectmenu = document.getElementById("elementselect");
    chosenoption = selectmenu.options[selectedIndex];
    load_element(chosenoption.value);
    $("#elementselect").attr('selectedIndex', 0);
  }
});

如果选择了元素1,则调用.change并调用load_element函数。将selectedIndex设置回0后,再次调用.change函数,但selectedIndex仍为1。所以load_element函数被调用两次......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

直接访问selectedIndex元素的<select>属性。另外,使用var关键字来声明局部变量,除非您真的希望selectedIndex可以在事件处理函数之外访问。

var selectedIndex = $("#gadgetselect")[0].selectedIndex;
// ...
this.selectedIndex = 0;

如果你真的必须使用jQuery的prop()方法,但在这种情况下这样做没有任何好处。

var selectedIndex = $("#gadgetselect").prop("selectedIndex");
// ...
$(this).prop("selectedIndex", 0);