将鼠标hover在选择列表中的上
我试图在将鼠标hover在选择列表中的选项上时显示说明,但是,我无法在hover时识别代码。
相关代码:
选择表格块:
操作选择(前面定义的数组):
function rankFeatures(create) { var $optionList = $("#optionList"); var $ranks = $("#ranks"); if(create == true) { for(i=0; i<5; i++){ $optionList.append(features[i]); }; } else { var index = $optionList.val(); $('#optionList option:selected').remove(); $ranks.append(features[index]); };
}
这一切都有效。 当我试图处理hover在选项上时,这一切都崩溃了:
$(document).ready( function (event) { $('select').hover(function(e) { var $target = $(e.target); if($target.is('option')) { alert('yeah!'); }; }) })
我在搜索Stack Exchange时发现了代码,但是我没有运气让它工作。 单击某个选项时会发出警报。 如果我不移动鼠标并通过按Enter键关闭警报,它就会消失。 如果我用鼠标关闭,会弹出第二个警告窗口。 只是偶尔在选择项周围移动鼠标会弹出一个警告框。 我已尝试直接定位选项,但在此方面收效甚微。 如果我将鼠标hover在某个选项上,如何才会弹出警报?
谢谢阅读!
您可以使用mouseenter
事件。
而且您不必使用所有这些代码来检查元素是否是一个option
。
只需使用.on()
语法委托给select
元素。
$(document).ready(function(event) { $('select').on('mouseenter','option',function(e) { alert('yeah'); // this refers to the option so you can do this.value if you need.. }); });
演示http://jsfiddle.net/AjfE8/
尝试使用鼠标hover。 它为我工作。 只有当焦点来自选项列表(如mouseout)时,hover也会起作用。
function (event) { $('select').mouseover(function(e) { var $target = $(e.target); if($target.is('option')) { alert('yeah!'); }; }) })
你不需要在一个函数中说唱,我永远无法以这种方式工作。 拿出来时效果很完美。 还使用鼠标hover,因为离开目标时会运行hover 。
$('option').mouseover(function(e) { var $target = $(e.target); if($target.is('option')) { console.log('yeah!'); }; })
小提琴看它工作。 将其更改为控制台,这样您就不会收到带有警报的垃圾邮件。 http://jsfiddle.net/HMDqb/
你想要的是检测选项元素上的hover事件,而不是选择:
$(document).ready( function (event) { $('#optionList option').hover(function(e) { console.log(e.target); }); })
我有同样的问题,但没有一个解决方案正在运作。
$("select").on('mouseenter','option',function(e) { $("#show-me").show(); }); $("select").on('mouseleave','option',function(e) { $("#show-me").hide(); }); $("option").mouseover(function(e) { var $target = $(e.target); if($target.is('option')) { alert('yeah!'); }; });
在这里我的jsfiddle https://jsfiddle.net/ajg99wsm/