2014-11-24 71 views
0

是否可以在不添加/刪除類的情況下將鏈接更改爲「活動」?我得到的問題是,如果將「a」標籤更改爲「a.active」,那麼我的其他腳本將不起作用。讓鏈接變爲「活動」而不添加/刪除類別

所以這樣的作品的鏈接,而不是我的其他腳本;(,因爲一類將被添加和刪除

<script> 
    $(function(){ 
     $('.mydiv a').click(function(){ 
      $('.mydiv .active').removeClass('active'); 
      $(this).addClass('active'); 
     }); 
    }); 
</script> 

任何人可以幫助我

更新2。?
,這是我一起工作的腳本: http://jsfiddle.net/7n2d4b44/2/

+0

爲什麼不會你的其他劇本的工作,如果錨有。主動類? – 2014-11-24 16:11:32

+0

它工作一次,但如果我再次點擊相同的鏈接腳本不工作了。因此,如果我從頂部刪除鏈接腳本,則無論我多麼頻繁地點擊相同的鏈接,我的其他腳本都可以正常工作。所以我認爲腳本在類添加/刪除時遇到問題? – User 2014-11-24 16:15:50

+0

@Snatch然後修復該腳本。如果你需要一個活躍的類,那麼沒有任何辦法可以解決這個問題。 – 2014-11-24 16:18:03

回答

1

使用data-* attributes保存數據,不使用類名的數據。您可以使用jQuery .data方法來獲取data- *屬性的值。

var sliding = $('.sliding_div'); 
 
var divWords = $('.sliding_div p'); 
 

 
$('.links a').click(function() { 
 
    //pass .data the name after the `data-` part in the attribute name 
 
    var c = '.' + $(this).data("filter"); // get name to filter classes and make it as a CSS selector 
 
    
 
    divWords.hide().filter(c).show(); // hide all words, 
 
    // filter to get the ones with class like the clicked link 
 
    // show the filtered ones 
 

 
    //You could move this to its own handler 
 
    //$(".links a.close).click(...) 
 
    c === '.close' ? sliding.hide() : sliding.show(); 
 
    // if c is .close show the sliding_div else hide it 
 
    
 
    $(".links .active").removeClass("active"); 
 
    $(this).addClass("active"); 
 
});
.links { 
 
    width: 60px; 
 
    float: left; 
 
} 
 
.sliding_div { 
 
    padding:10px; 
 
    width: 200px; 
 
    float: right; 
 
    background-color:#ccc; 
 
    display:none; 
 
} 
 
.sliding_div div { 
 
    display:none; 
 
} 
 
.active{ 
 
    color:#F00; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="links"> 
 
    <a href="#" data-filter='one'>Link 1</a> 
 
    <a href="#" data-filter='two'>Link 2</a> 
 
    <a href="#" data-filter='three'>Link 3</a> 
 
    <a href="#" data-filter='close'>Close</a> 
 
</div> 
 

 
<div class="sliding_div"> 
 
    <p class='one two three'>House</p> 
 
    <p class='one two three'>Cat</p> 
 
    <p class='one'>Dog</p> 
 
    <p class='three'>Car</p> 
 
    <p class='one two'>Man</p> 
 
</div>

+0

這對我來說是完美的解決方案 - 大thx!對所有其他人都是一樣的! – User 2014-11-24 16:53:36

1

你可以使用ŧ他CSS僞類,我認爲這樣的:

a:active { color: lime } 

更多信息CSS :active pseudo-class

+0

如果用戶正在主動將鼠標放在錨點上,這可能不是OP所要求的,這隻會對鏈接進行設置。設置一個具有「主動」類的元素往往用於向用戶顯示該項目是當前在頁面上顯示的項目,即將菜單項目設置爲活動以顯示其當前頁面。 – 2014-11-24 16:17:02

0

$(this).addClass('active');應追加所以元素應該有2班。其他班級不應該被刪除。你可以仔細檢查。

你的情況,這可能是因爲你的函數訪問其他類不編碼正確

+0

我現在在頂部添加腳本 - 也許y可以修復它? – User 2014-11-24 16:21:54

+0

http://jsfiddle.net/7n2d4b44/8/ - 完成。一點點哈克,但它的作品。理想情況下,您希望將鏈接存儲在數組中並遍歷到 – limbenjamin 2014-11-24 16:33:28

0

我做了一些變化,但你現在應該可以添加代碼以使用活動類,不擔心這個有點...

CSS

.links { 
    width: 60px; 
    float: left; 
} 
.sliding_div { 
    padding:10px; 
    width: 200px; 
    float: right; 
    background-color:#ccc; 
} 
.sliding_div p { 
    display:none; 
} 

HTML

<div class="links"> 
    <a href="#" data-link='one'>Link 1</a> 
    <a href="#" data-link='two'>Link 2</a> 
    <a href="#" data-link='three'>Link 3</a> 
    <a href="#">Close</a> 
</div> 
<div class="sliding_div"> 
    <p class='one two three'>House</p> 
    <p class='one two three'>Cat</p> 
    <p class='one'>Dog</p> 
    <p class='three'>Car</p> 
    <p class='one two'>Man</p> 
</div> 

的Javascript

var sliding = $(".sliding_div"); 
var divWords = $(".sliding_div p"); 

$(".links a").click(function (e) { 
    e.preventDefault(); 
    divWords.hide(); 
    sliding.find("." + $(this).data("link")).show(); 
}); 

的jsfiddle例如...

http://jsfiddle.net/7n2d4b44/7/

+0

我覺得這樣可以從一些關於您更改內容和原因的解釋中獲益良多。然後再一次,也許他們不關心學習,只會很高興他們有一些工作代碼。 – 2014-11-24 16:35:58

+0

也許有些用戶只複製它,但我認爲它也是一個很好的方法來看劇本生活 - 所以thx射手! – User 2014-11-24 16:55:23