2013-01-13 83 views
0

這裏刪除類是我的html:如何使用removeClass()從所有類似項目

<dl> 
<dt>Options 1</dt> 
<dd>Link 1</dd> 
<dd>Link 2</dd> 
<dd>Link 3</dd> 
<dt>Option 2</dt> 
<dd>Link 4</dd> 
<dd>Link 5</dd> 
<dd>Link 6</dd> 
</dl> 

我已經創建了我這個願望菜單效果的插件。這裏是我的插件:

(function($) { 
    $.fn.Pointer = function() { 
     var txt, y; 
     txt = $(this); 
     txt.on("click", function(event){ 
      y=event.pageY; 
      y = y - 15; 

      //animate pointer 
      $('#pointer').animate({ 'top' : y + 'px'}); 
      //adding hover class to selected links 
      txt.addClass("select_menu"); 
     }); 
    }; 
})(jQuery); 

$("dd").each(function(){ 
    $(this).Pointer(); 
}); 

快速解釋插件效果。我有一個箭頭指向您點擊鏈接的div。每次點擊時,箭頭都會滑動到單擊的新鏈接上(此滑塊工作正常)。我也有點擊鏈接更改類。這是我的第一個問題。當您點擊鏈接1時,該課程正在應用。我想要做的是點擊鏈接2和應用於鏈接1的上一個類,我想要清除並在新點擊的鏈接上應用該類。我無法從上次點擊的鏈接中移除課程。有人可以幫我弄這個嗎?

我希望解釋清楚。

+1

的崩潰問題在一個單獨的問題屬於,不問的人,引導您完成整個項目。同樣在語義上,這是'

'的不好用法。同時請減少和格​​式化您的代碼示例 - 這一個有一堆切線不真正相關的東西。 ('.animate()'調用)。 – millimoose

+1

'this.addClass('select_menu')。closest('dl')。find('dd')。not(this).removeClass('select_menu');'' – adeneo

+0

@adeneo這很好。謝謝。 – Bryan

回答

0

從我從你的問題明白了,你可以嘗試這樣的事情了刪除和添加類:

$(".arrow").click(function(){ 
    $(".myClass").removeClass("myClass"); 
    $(this).addClass("myClass"); 
}); 
-1

有插件作用於整個項目組的,那麼就從所有清除類他們在重新申請之前。即結構是這樣的:

$.fn.Pointer = function() { 
    var $group = this; 
    $group.on('click.Pointer', function() { 
    var $link = $(this); 

    $group.removeClass('select_menu') 
    $link.addClass('select_menu') 
    }); 
}; 

$('dd').Pointer(); 

無論元素的組你打電話.Pointer()僅會應用到一個元素.select_menu類了出來。

例如在Codepen:http://codepen.io/anon/pen/hidFq

+0

不應該**這**是$(this)? – Bryan

+0

@Bryan顯然不是自代碼工作。插件函數的上下文是整個選擇器,你在考慮'.each()' – millimoose

相關問題