2012-09-09 112 views
-2

我試圖通過單擊使用Jquery的元素來更改元素的ID。該操作在第一次點擊時起作用,但之後沒有任何點擊。Jquery:通過單擊元素本身來更改元素的ID,然後通過再次單擊元素來更改元素的ID

$(document).ready(function(){ 
$("#chatframebuttonhidden").click(function() { 
var $t = $(this); 
      $t.attr({ 
        id : $t.attr('id2') 
       }); 
      });; 
$("#chatframebuttonshown").click(function() { 
var $t = $(this); 
      $t.attr({ 
        id : $t.attr('id1') 
       }); 
      });; 
}); 


<div id="chatframebuttonhidden" id2="chatframebuttonshown" id1="chatframebuttonhidden"></div> 

術語「隱藏」並不意味着div不在視圖中,它只是意味着它更小,更不明顯。

最終目標是製作一個隱藏/取消隱藏屏幕底部大型固定位置分隔線的按鈕。我認爲改變ID因此它引用了一個新的樣式表是最好的方法,但如果你們知道更好的方法,我就會全神貫注。

+0

正如答案所示,使用類更加適用,但即使您更改了ID,點擊處理程序也不會解除綁定,因此您可以執行此操作 - > [FIDDLE](http:// jsfiddle。 net/dj2nG /),改變ID,儘管這樣做通常是一個壞主意。 – adeneo

+0

「隱藏」一詞並不意味着div不在視圖中,它只是意味着它更小,更不明顯。「但是接下來你會說」最終目標是製作隱藏/取消隱藏大型固定位置的按鈕屏幕底部的分頻器。「這是什麼?使div更小/更大或隱藏/取消隱藏它? – Nope

回答

1

改爲使用類並將其打開和關閉。 ID並非真正意義上的改變,類是。

也不需要換出整個樣式表來隱藏一些元素。使用父容器並隱藏它。

+0

這可以用來更改樣式屬性嗎?我想切換: background-position:0px -20px; and background-position:0px 0px; –

+0

我不會直接改變樣式屬性。一種方法是將這兩種樣式放在不同的類上並將它們打開和關閉。 – ctcherry

+0

天才!謝謝。 –

0

我寧願使用類,而不是ID的改變樣式表屬性。

$(#chatframebutton).toggleClass(chatframebuttonshownhidden); 

其中chatframebuttonshownhidden在樣式表

結賬http://api.jquery.com/toggleClass/更多細節說明。

+0

使用類或Id來更改樣式表樣式並不重要 –

+0

我認爲它很重要,因爲使用class給了你一定的抽象,相反,id是非常具體的。舉個例子,我在頁面上有100個按鈕,並且我想通過一次點擊來改變所有按鈕的樣式,我會用100個ID編寫一個CSS,還是隻寫一個類? – Mandar

+0

是的,我會在你的答案中包含這個,你也有一個小類型的選擇器 –