سؤال
أنا أحاول إنشاء قائمة مع هذا الهيكل:
<ul id="primary" class="menuOptions">
<li>Item 1</li>
<li>Item 2
<div id="secondary">
<ul class="menuOptions">
<li>subItemOne</li>
<li>subItemTwo</li>
</ul>
</div>
</li>
<li>Item 3</li>
</ul>
أنا موحية مع هذا البرنامج النصي:
$j('.menuOptions li').each(function(i){
//applies to all menu options
$j(this)
.bind('mouseover',function() {
$j(this).toggleClass("over");
})
.bind('mouseleave',function() {
$j(this).toggleClass("over");
});
});
أنا وجدت أن toggleClass الوظيفة اتصل على القائمة الأولية البند الماوس يتحرك على الثانوية عناصر القائمة.وأنا أعلم أن mouseleave ليس من المفترض أن يسمى حتى الماوس من الأطفال ، لذلك أنا في حيرة.
هل أنا بحاجة إلى العمل بنشاط على التوقف عن نشر الحدث بطريقة أو بأخرى ؟
وذلك بفضل!
تيم
المحلول
هل حاولت فقط مع استخدام وظيفة تحوم.
$j('ul.menuOptions li').hover(function(){
$j(this).toggleClass("over");
} ,
function() {
$j(this).toggleClass("over");
}
);
نصائح أخرى
وأظن المشكلة انك تقارن الماوسأكثر مع الماوسترك.
انظر http://api.jquery.com/category/events/mouse-events/
بشكل عام ، فإن وصلات تريد هي:
- الماوسأدخل مع الماوسترك
- الماوسأكثر مع الماوسبها.
باستخدام مجموعات أخرى يمكن أن يؤدي إلى سلوك غير مرغوب فيه.الماوسأكثر و الماوسبها هم من كبار السن الأحداث التي, في حين لا يزال في بعض الأحيان مفيدة ، هي عموما أقل شأنا الماوسأدخل و الماوسترك.
يمكنك أيضا محاولة ببساطة الأشياء باستخدام تحوم, هو بالضبط ما يعادل باستخدام الماوسأدخل و الماوسترك.