下式给出:
<select id="mySelect">
<option>..</option>
...
</select>
使用select id,如何在其中一个选项上触发click事件?我尝试将事件直接附加到select,但只要单击select就会触发事件(即使没有选项)。哦,这是一个多选(虽然我认为不重要)。
答案 0 :(得分:66)
您需要“更改”事件处理程序,而不是“点击”。
$('#mySelect').change(function(){
var value = $(this).val();
});
答案 1 :(得分:31)
$('#mySelect').on('change', function() {
var value = $(this).val();
alert(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<select id="mySelect">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
</select>
答案 2 :(得分:1)
您可以附加焦点事件以选择
$('#select_id').focus(function() {
console.log('Handler for .focus() called.');
});
答案 3 :(得分:0)
我使用change
处理程序时遇到的问题是,我在<select>
上上下滚动的每次按键都触发了它。
我想在单击选项或在所需选项上按enter
时获得该事件。这就是我最终做的方式:
let blockChange = false;
$element.keydown(function (e) {
const keycode = (e.keyCode ? e.keyCode : e.which);
// prevents select opening when enter is pressed
if (keycode === 13) {
e.preventDefault();
}
// lets the change event know that these keypresses are to be ignored
if([38, 40].indexOf(keycode) > -1){
blockChange = true;
}
});
$element.keyup(function(e) {
const keycode = (e.keyCode ? e.keyCode : e.which);
// handle enter press
if(keycode === 13) {
doSomething();
}
});
$element.change(function(e) {
// this effective handles the click only as preventDefault was used on enter
if(!blockChange) {
doSomething();
}
blockChange = false;
});
答案 4 :(得分:0)
你也可以试试这个来获取之前的选择值和点击值。
HTML
<select name="status">
<option value="confirmed">confirmed</option>
<option value="packed">packed</option>
<option value="shiped">shiped</option>
<option value="delivered">delivered</option>
</select>
脚本
var previous;
$("select[name=status]").focus(function () {
previous = this.value;
}).change(function() {
var next = $(this).val()
alert("previous: "+previous+ " and Next: "+ next)
previous = this.value;
});
答案 5 :(得分:-1)
它为我工作
<select name="" id="select">
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
</select>
<script>
$("#select > option").on("click", function () {
alert(1)
})
</script>
答案 6 :(得分:-2)
我在这种情况下所做的是我将这样的选项元素OnClick事件放入:
<option onClick="something();">Option Name</option>
然后只需创建一个这样的脚本函数:
function something(){
alert("Hello");
}
更新:
不幸的是我不能评论所以我在这里更新
TrueBlueAussie 显然 jsfiddle 遇到了一些问题,请查看此处是否有效:http://js.do/code/klm
答案 7 :(得分:-2)
一种可能的解决方案是为每个选项添加一个类
<select name="export_type" id="export_type">
<option class="export_option" value="pdf">PDF</option>
<option class="export_option" value="xlsx">Excel</option>
<option class="export_option" value="docx">DocX</option>
</select>
然后使用此类的单击处理程序
$(document).ready(function () {
$(".export_option").click(function (e) {
//alert('click');
});
});
更新:看起来代码可以在FF,IE和Opera中使用,但在Chrome中则不行。 查看规范http://www.w3.org/TR/html401/interact/forms.html#h-17.6我会说这是Chrome中的一个错误。