如何使用jquery选择的插件获取悬停/鼠标悬停事件的选择值?

时间:2014-06-25 09:12:17

标签: javascript jquery html css

当使用所选插件悬停选项时,我试图获取悬停/鼠标悬停事件的选项值....

小提琴:Demo Fiddle

这是js代码......

   $("#myselect").chosen();

   $('#myselect').next('.chosen-container').on('mouseenter', 'li.active-result', function(e) {
    alert($(this).text());
    alert($(this).val()); // how to get option value...?
   });

3 个答案:

答案 0 :(得分:5)

USe委托,因为选择的插件动态创建.active-result类元素。

$("#myselect").chosen();

$(document).on("hover",".active-result",function(){
 alert($(this).text());   
});

Fiddle

修改

$(document).on("hover",".active-result",function(){
    alert($("#myselect option").eq($(this).data("option-array-index")).val());

});

Updated fiddle

答案 1 :(得分:1)

您需要event delegation将事件绑定到动态添加的DOM:

  

事件委托允许我们将单个事件侦听器附加到父元素,该元素将为匹配选择器的所有后代触发,无论这些后代现在是存在还是将来添加。

$("body").on('mouseenter','li.active-result',function(){
  alert($(this).data('option-array-index'));   
});

<强> Working Demo

答案 2 :(得分:1)

由于此插件为选项创建了新元素并读取了选项值,因此您需要找到匹配文本的选项并读取其值:

$('#myselect').next('.chosen-container').on('mouseenter', 'li.active-result', function(e) {
    var currentText = $(this).text();
    alert($(this).text());
    alert($('#myselect option').filter(function () { return $(this).html() == currentText; }).val()); // how to get option value...?
 });

<强> Demo