2012-01-06 114 views
0

是否有可能切換(切換)rel屬性的方式,類可以在jQuery中切換? http://api.jquery.com/toggleClass/Jquery rel切換?

我正在嘗試創建一個按鈕,點擊時會改變(切換)另一個按鈕的rel屬性。希望這是有道理的。


我很新的這個,不知道如果我已經實現你代碼正確,但它不工作。我可能只是在想這個事情是錯的。

我的想法是使用animatedcollapse.js插件(http://www.dynamicdrive.com/dynamici...edcollapse.htm)爲手風琴製作動畫。手風琴根據「rel」屬性工作,或者「rel = collapse [selected div]」或者「rel = expand [selected div]」。擴展或摺疊手風琴。它的設置方式的問題是,當一個div崩潰時,另一個div在後臺同時展開。

http://dl.dropbox.com/u/14080718/Final/UITabs10.html

我想使它所以每一個新的鏈接被點擊它擴展了新的前原手風琴完全摺疊的時間。所以每次點擊一個鏈接時,前面的div都會在它打開一個新的div之前完全關閉。

我在想「rel = collapse [selected div]」和「rel = expand [selected div]」之間的rel切換可能會解決這個問題,但我不確定。如果您有任何其他想法,我很樂意聽到他們。

+0

按鍵不*有*一個'rel'屬性(因爲他們沒有一個'href'屬性說什麼資源的關係是)。 – Quentin 2012-01-06 07:19:49

+0

是的,但你必須編寫自己的邏輯。 – 2012-01-06 07:21:18

+0

你在用什麼(rel?)? – Matijs 2012-01-06 07:26:23

回答

2

我剛寫了一個jQuery插件。

用法:$("selector").toggleAttr("rel", "option1", "option2");

(function($) { 
    $.fn.toggleAttr = function(attribute, option1, option2) { 
     return this.each(function() { 
      var $this = $(this); 
      if ($this.attr(attribute) != option1) { 
       $this.attr(attribute, option1); 
      } else { 
       $this.attr(attribute, option2); 
      } 
     }); 
    } 
})(jQuery); 
+0

http://dl.dropbox.com/u/14080718/Final/UITabs11.html我不認爲我正確使用您的插件。我究竟做錯了什麼?謝謝您的幫助! – 2012-01-06 20:22:34

+0

一個非常常見的錯誤,以及我的插件的錯誤用法:您在文檔加載之前正在執行代碼。使用**'$(document).ready(function(){$(「#button」)。toggleAttr(「rel」,「expand [thumb1]」,「collapse [thumb1]」)});'**。另見:http://api.jquery.com/ready/ – 2012-01-06 21:44:57

+0

羅布代碼是非常好的!謝謝您的幫助!有沒有辦法關閉該功能,所以當我點擊頁面上的另一個鏈接時,rel會回到原來的狀態?基本上,我希望每個div在另一個div被打開之前完全關閉。那有意義嗎? http://dl.dropbox.com/u/14080718/Final/UITabs11.html – 2012-01-09 06:59:32

0
//global flag to check condition 
var flag = true; 

$('#yourelement').click(function(){ 
      if(flag == true){ 
       flag = false; 
       $('#yourotherelement').attr('rel', newValue);   
      }else{ 
       flag = true; 
       $('#yourotherelement').attr('rel', oldValue); 
      } 
}); 
+0

全局標誌? Eugh。現在您將相同的信息存儲在兩個地方,其中一個可以防止代碼被輕易重用。 – Quentin 2012-01-06 10:27:35

0

你可能想要這個,

$(document).ready(function(){ 
    $(".buttonToggle").click(function(){ 
    var relAttribute = $(".buttonYouWanttotogglerelattr").attr("rel"); 
    //gets current rel 
    if(relAttribute == "value1"){ 
    $(".buttonYouWanttotoggleRelattr").attr("rel","value2"); 
    //if its value1 change it to value2 
    } 
    else 
    { 
    $(".buttonYouWanttotoggleRelattr").attr("rel","value2"); 
    } 
    }); 
}); 
+1

'if(var =「value1」){'?你什麼?! – Quentin 2012-01-06 10:26:22

+0

啊,這個答案已被編輯。所以...'如果(relAttribute =「value1」){'?你什麼?! – Quentin 2012-01-06 13:30:47

+1

@Mohammed,你必須使用'=='或'==='來測試變量是否相等。目前,您正在將''value1''分配給'relAttribute'。 – 2012-01-06 13:30:51