У меня есть следующий список
<ul id='myList'>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li class='item-selected'>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
</ul>
Я хочу добавить item-over
класса item-over
mouseenter
и хочу удалить item-over
класса item-over
mouseleave
без элемента, который имеет item-selected
класса
я пытался
$('#myList li:not(".item-selected")')
.mouseenter(function(){
$(this).addClass('item-over');
})
.mouseleave(function() {
$(this).removeClass('item-over');
});
Но неспособен.
Как это можно сделать?
Это работает
$('#myList li:not(".item-selected")')
.mouseenter(function(){
if(!$(this).hasClass("item-selected")) //added this line
$(this).addClass('item-over');
})
.mouseleave(function() {
$(this).removeClass('item-over');
});
На самом деле для этого вам не нужен JavaScript.
#myList li {
&:hover {
color: blue;
}
&.item-selected,
&.item-selected:hover {
color: red;
}
}
http://jsfiddle.net/f0t0n/xGqeE/
или для IE> = 8
#myList li {
&:hover:not(.item-selected) {
color: blue;
}
&.item-selected {
color: red;
}
}
Что, кажется, вы пропустили doc ready
обработчик для этого, попытайтесь поместить его в документ, готовый блок:
$(function(){
$('#myList li:not(".item-selected")').mouseenter(function(){
$(this).addClass('item-over');
}).mouseleave(function() {
$(this).removeClass('item-over');
});
});
кажется, что ваш код в порядке, на стороне события.
посмотрите на http://jsfiddle.net/F8rxJ/
это код:
$(document).ready(function () {
$('#myList li:not(".item-selected")').bind('click',function(){
alert('xxx');
});
});
он показывает, что событие работает.
попробуйте использовать "зависание" на вашей реальной работе, которую вы пытаетесь сделать.
Я бы использовал эту функцию, чтобы сделать это вдвойне уверенно, я бы также использовал hover
чтобы сделать его более захватывающим и забавным:
$('#myList li').not( ".item-selected" ).hover(
function(){
$(this).addClass('item-over');
},
function() {
$(this).removeClass('item-over');
}
);
:hover
в css не работает?.item-over
.