jquery中的菜单图像悬停

时间:2014-08-21 07:11:37

标签: javascript jquery html list menu

它应该如何正常工作?

$(".ok").hover(function () {
         $(this).parent().find('.ok').removeClass("ok").addClass("no");
         $(this).removeClass("ok").addClass("no");
     },
     function () {
         $(this).parent().find('.no').removeClass("no").addClass("ok");
         $(this).removeClass("no").addClass("ok");
     }
);
$(".no").hover(function () {
         $(this).parents().children('.no').removeClass("no").addClass("ok");
         $(this).removeClass("no").addClass("ok");
     },
     function () {
         $(this).parents().children('.ok').removeClass("ok").addClass("no");
         $(this).removeClass("ok").addClass("no");
     }
);

http://jsfiddle.net/rmtrpkqd/11/

现在徘徊不起作用。 当我徘徊" ok"上课时,图像应改为" no",当我徘徊" no"类,图像应更改为" ok",到所有子菜单。 当我将鼠标悬停在Grand Child Sum Menu 2上时,它会改变菜单1" ok"到"不" - 这是问题

帮我解决问题

2 个答案:

答案 0 :(得分:1)

使用Jquery的<)方法

 $("#yourID").on("mouseover", function () {
           //Your code goes here
        });

答案 1 :(得分:0)

您已在评论中描述了您期望以下行为:

o如果.ok悬停,请将该元素切换为.no

o如果.no悬停,请将该元素及其.no的所有子元素切换为.ok

$(document).on('mouseover', '.no', function() {
    $(this).toggleClass('no ok');
    $(this).parent('div').find('.no').toggleClass('no ok');
});

$(document).on('mouseover', '.ok', function() {
    $(this).toggleClass('no ok');
});

使用您告诉系统的$(document).on(EVENT, SELECTOR, FUNCTION()),即使您创建新元素(或元素获得新类),也可以将您的函数应用于给定的选择器,而在原始形式中,它只会附加您的函数到pageload上可用的元素。

**更新

根据您的评论更新 - 如果他们有另一个.no,这将检查每个.margin-l-300的孩子(在这种情况下,如果有任何子菜单,这是您的指标)。

$(document).on('mouseover', '.no', function() {
    $(this).toggleClass('no ok');
    $(this).parent('div').find('.no').each(function(){
        if ($(this).parent().children('.margin-l-300').length != 0)
           $(this).toggleClass('no ok');
    });
});