سؤال

أنا أحاول إنشاء قائمة مع هذا الهيكل:

<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/

بشكل عام ، فإن وصلات تريد هي:

  • الماوسأدخل مع الماوسترك
  • الماوسأكثر مع الماوسبها.

باستخدام مجموعات أخرى يمكن أن يؤدي إلى سلوك غير مرغوب فيه.الماوسأكثر و الماوسبها هم من كبار السن الأحداث التي, في حين لا يزال في بعض الأحيان مفيدة ، هي عموما أقل شأنا الماوسأدخل و الماوسترك.

يمكنك أيضا محاولة ببساطة الأشياء باستخدام تحوم, هو بالضبط ما يعادل باستخدام الماوسأدخل و الماوسترك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top