我的问题可能很愚蠢,因为我是网络开发的新手,现在我很困惑。
我的问题的第一部分是,有时当我使用console.log(some element)
打印东西时,它给了我一个包含所有侦听器的巨大对象,但有时它只返回一个html字符串,就像这样:
<option value="CS 245">CS 245</option>
我在上面找到some element
的方式是使用选择器,如下所示:
$( ".course_list option:selected" )[0]
我对这里的术语感到抱歉,因为我真的想知道复杂对象和上面对象之间的区别(也就是它们的名称)。我尽力选择我的话,但由于缺乏经验,我没有把它弄清楚。如果有人理解我的意思,请提前帮助我编辑这个问题并提供答案。
然后问题的第二部分是我想从上面的对象中得到“CS 245”字符串。我试过了
$( ".course_list option:selected" )[0].val();
$( ".course_list option:selected" )[0].attr("value");
$( ".course_list option:selected" )[0].text();
但他们都给了我这个错误:
Uncaught TypeError: undefined is not a function
我已经包含了jquery,并且控制台中没有显示其他 crash / file_not_found 。我正在使用最新的bootstrap和formstone selecter,但我不确定这对我有什么影响。
有人可以帮忙吗?
答案 0 :(得分:3)
您不需要将其转换为 javascript对象原始DOM元素,只需执行以下操作:
$( ".course_list option:selected" ).val()
执行$( ".course_list option:selected" )[0]
时你得到的是原始DOM元素,它不是一个jquery对象,所以在它上面调用val()
会给你错误。
使用DOM元素,您可以这样尝试:
$( ".course_list option:selected" )[0].getAttribute("value")
要了解更多信息,请参阅此SO Post
答案 1 :(得分:2)
你使用它很简单:
$(".course_list").val();
答案 2 :(得分:1)
只需获取select
并执行val
方法:
$('.course_list').val();
$(function () {
$('#get').on('click', function () {
var value = $('.course_list').val();
alert(value);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select class="course_list">
<option value="1">Item 1</option>
<option value="2">Item 2</option>
<option value="3">Item 3</option>
<option value="4">Item 4</option>
</select>
<input type="button" value="Get Value" id="get" />
答案 3 :(得分:1)
你可以以适当的方式得到它。下面肯定会帮助你。
<select id="myselect">
<option value="1">Mr</option>
<option value="2">Mrs</option>
<option value="3">Ms</option>
<option value="4">Dr</option>
<option value="5">Prof</option>
</select>
// To Get Text
$("#myselect option:selected").text();
// To Get Value
$("#myselect option:selected").val();
答案 4 :(得分:0)
使用:
$(".course_list").val()
<select>
的值是所选选项的值。
您不需要使用[0]
。当你想获得jQuery对象包含的DOM元素时,可以使用它,这样就可以调用普通的DOM方法而不是jQuery方法。例如。你可以写:
$(".course_list")[0].value
因为.value
是DOM属性。