2012-01-06 107 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