2013-04-28 68 views
0

我在我的网站上有两个select标签。当我尝试在一个select标记中获取选定项目的文本时,我发现它会返回两个select标记的两个文本,即使我指定通过类属性从哪个select中检索数据。jquery返回选择标签中的选定项目的文本加上其他选择标签中选定项目的文本

我的代码是

$('select.select').change(function(e) { 

e.preventDefault(); 
var val1 = $(' option:selected').text(); 
alert(val1); 


}); 

$('select.select2').change(function(e) { 

e.preventDefault(); 

var val2 = $(' option:selected').text(); 
alert(val2); 


}); 

警报总是包含级联两个select标签的文本。

您的常见帮助表示赞赏。

+1

的变量的名称你选择化妆我想知道你真正渴望的是选择的价值而不是选择的选项的文本。有时它们是相同的,但前者使得代码更加便携。例如在你的更改回调中,它会是:'$(this).val()' – gillyspy 2013-04-28 18:01:47

+0

我完全同意你的观点,当我将它改为var val1 = $('option:selected',this).text();它现在正在基于Simon Adcock的回答工作,现在正在工作。 – 2013-04-28 18:03:09

回答

1

也许更新选择指定选择的范围:

$('select.select').change(function(e) { 

    e.preventDefault(); 
    var val1 = $('option:selected', this).text(); 
    alert(val1); 

    return false; 

    }); 

$('option:selected', this)将返回改变元素的上下文中发现价值的选择。

+0

感谢您的快速反馈。我会测试它并回来给出一个反馈。 – 2013-04-28 17:58:06

+0

完美。非常感谢,我希望我能有一天能够为社区提供如此高效和快速的帮助。 – 2013-04-28 17:59:32

+0

我可以在9分钟内接受,我会回来这里做。 – 2013-04-28 17:59:53

1

这是因为这$('option:selected').text();你有两个选定的选项在你的页面,所以它返回两个值。

+0

你说得对。我用了答案,它正在工作。 – 2013-04-28 18:00:14

1

你需要这样做:

// Call the change event for the select 
$('select.select').change(function (e) { 

    e.preventDefault(); 

    // Get the selected option for the select in current scope 
    var text = $(this).find('option:selected').text(); 
    alert(text); 

    //return false; No need of this, as we already called the preventDefault() method 
}); 
+0

是的,我完全同意你的观点,当我在Simon Adcock的基础上添加'this'时,回答它正在工作。我会根据你的建议去除返回错误,谢谢你的时间。 – 2013-04-28 18:04:47

+1

此外,一个建议,你可以使用相同的类'选择'两个选择下拉和上述代码将适用于两者。无需用相同的逻辑编写两个更改事件。 – 2013-04-28 18:06:30

+0

我同意你,但在我的情况下,我需要更多的工作,因为我已经根据班级的差异放置了不同的CSS。非常感谢 – 2013-04-28 18:09:48

1

你需要指定类,当你检索值:

var val1 = $('.select option:selected').text(); 

var val2 = $('.select2 option:selected').text(); 
+0

我明白你的意思,但我已经这样做了,我只是忘了在我的帖子中提到它,我会编辑 – 2013-04-28 18:12:03

+1

http://jsfiddle.net/mTW88/ – qwerty 2013-04-28 18:14:21

+0

你是完全正确的 – 2013-04-28 18:19:08