2013-10-27 29 views
1

可能很容易,但我無法弄清楚。我有這樣的代碼:Javascript變量

var myNewHref = "#"+jQuery(this).attr('id'); 
jQuery(this).attr('href', myNewHref); 
jQuery(this).attr("id", ""); 

在第一行中,我創建了基於元素id的新變量。在第二行中,我用myNewHref變量添加一個href屬性。在第三行中,我將id設置爲空。問題是,如果我將我的id設置爲空,它也會更改myNewHref變量並將其設置爲空,但我希望它仍使用myNewHref進行設置。除了將id分配給我的href之後,清除id的操作發生。任何人都可以幫忙

+0

它不應該那樣做;這段代碼在哪裏運行? (同樣,'jQuery(this).attr('id')'可能只是'this.id'。同樣,使用'this.href = myNewHref'和'this.id =「」'。jQuery通常是*同時也是不必要的,也比等效的DOM API複雜。) – Ryan

+2

你確定這是發生了什麼?這似乎不正確,並且[this jsfiddle](http://jsfiddle.net/px8pb/)確認你的代碼工作正常。另外,和其他人一樣,jQuery對於你正在執行的任務來說並不是必須的(儘管除非有更多的上下文,那也不會導致你的問題)。 – Chad

+0

謝謝你的答案。現在,在你的迴應後,我知道爲什麼會發生這種情況。這部分代碼是在jQuery(window).resize(function(){這裏是代碼})函數裏面的。所以,當我改變瀏覽器ID的大小隨窗口的每個新維度而改變時。 – David

回答

1

似乎工作就好:

http://jsfiddle.net/4y2HM/4/

<a href="#" id="test">hello</a> 

<script> 
    $('#test').click(function(){ 
     var myNewHref = "#"+$(this).attr('id'); 
     $(this).attr('href', myNewHref); 
     $(this).attr("id", ""); 
     alert("href: " + $(this).attr('href')); 
     alert("id: " + $(this).attr('id')); 
    }); 
</script> 
-1

如果你想擺脫id屬性,用這樣的方式:

jQuery(this).removeAttr("id"); 
/* Or */ 
this.removeAttr("id"); 

或者,如果你想廢了id,你可以使用:

this.id = null; 
+2

這並不能真正解釋所描述的行爲。 – Ryan

+0

取決於用例。但更好的一個。 –

0

我是unable to replicate your issue,除非我多次運行代碼。要正確清除ID,但是,你可以簡單地使用:

this.id = null; 

您需要確保該代碼是不是運行一次以上。如果您的代碼需要多次運行,那麼您的ID已被刪除,您的href屬性將設置爲#。如果您的代碼位於基於特定元素的事件處理程序中,則可以使用jQuery's one() function來僅處理該事件一次。