如何在jQuery中编写一个能够捕获下拉列表值的click事件?我有:
var select = $('select #dealerName');
$(function {
select.click(function {
alert( $('#dealerName').val() );
});
});
我只是想要获得价值 - 这就是我提醒它的原因。点击功能会是什么样子?我的下拉列表中的ID是“dealerName”。以上内容并未提醒任何事情。
答案 0 :(得分:5)
这是因为你没有正确选择它
var select = $('select #dealerName');
应该是
var select = $('select#dealerName');
但是......我假设你想要在选中后获得价值?当你打开下拉列表时,它会立即显示警报。
不使用.click()
,而是使用.change()
编辑:就个人而言,我只是将处理程序直接附加在对象上。
$('select#dealerName').change(function() {
alert($(this).val());
}
答案 1 :(得分:1)
五件事:
除非您的javascript代码位于文档的底部,否则您需要在$(function(){})中包含 all 您的jQuery; - 就像现在一样,它会在DOM准备好被访问之前尝试找到你的选择。
如果<select>
元素的ID为#dealerName
,则您的jQuery选择器将为$('#dealerName') - 因为现在您正在寻找后代到指定了ID的<select>
。你也不想做select#dealerName,因为ID是唯一的,并且指定标签只会减慢jQuery的速度。
click
会在有人点击选择时立即触发,而不是在选择新选项时触发。您可能需要change
没有太大的交易,但有一个稍微受欢迎的约定,命名变量引用jQuery包装器,开头有一个$
,以便能够快速告诉jQuery包装的是什么。
在事件调用中,您可以使用this
所以一个有效的例子是:
$(function() {
$('#dealerName').change(function() {
alert($(this).val());
});
});
答案 2 :(得分:0)
我看到了一些可能的错误:
删除第一行选择器中的空格。
select#dealername
这意味着“具有经销商名称id的选择标签”。您的版本是“名为dealername的元素,它是选择标记的子”。
此外,在编写内联函数时,请在function
关键字后面添加()。