我的问题不仅仅是“我如何从选择框中获取所选选项”
在选择框中,在右键单击选项元素之前,没有选中任何选项元素 在右键单击选项时,我想获取该选项元素的值。
因此,选项:选中将不起作用。
<select name='mySel' id='mySel' multiple>
<option value='val1'>myOption1</option>
<option value='val2'>myOption2</option>
</select>
我已将右键单击事件绑定到上下文菜单
// bind right click event to context menu
(function( $ ) {
$.fn.rightClick = function(method) {
$(this).bind('contextmenu rightclick', function(e){
e.preventDefault();
method();
return false;
})
};
})( jQuery );
以下事件处理程序代码仅在右键单击 -
之前选择了一个选项时才有效$('#mySel').rightClick(function(e){
alert($('#mySel option:selected').text());
});
不使用选项:已选中,如何获取右键单击选项的值?
提前感谢您的提示。
答案 0 :(得分:1)
event参数的target属性将引用触发事件的元素,在您的情况下是右键单击的选项元素:
$('#txBase').rightClick(function(e){
alert(e.target.value); // val1 or val2
});
<强> DEMO 强>
关于您的代码的一些注意事项:
无需return false
和e.preventDefault
,两种陈述都有相同的结果,所以只需使用其中一种
您可能想检查method
是否未定义且在调用之前是一个函数,否则它将会中断
当您致电method
时,请将参数e
传递给它,否则您将无法在回调中使用
以下是修改后的代码:
$(this).bind('contextmenu rightclick', function(e) {
e.preventDefault();
if (method && $.isFunction(method)) {
method(e); // pass the event parameter to your callback
}
})
答案 1 :(得分:0)
<select name='mySel' id='mySel' multiple>
<option value='val1' oncontextmenu="getValue(this);return false">myOption1</option>
<option value='val2' oncontextmenu="getValue(this);return false">myOption2</option>
</select>
<div id="status"></div>
<script>
function getValue(t){
document.getElementById('status').innerHTML=t.value;
}
</script>
这个怎么样?