2011-10-20 68 views
0

在「click」上,我將myDiv的ID更改爲myDiv1。現在我想使用新的ID(myDiv1),它取代了myDivID替換和新ID用於Jquery中的進一步處理

$("#myDiv").attr('id', 'myDiv1'); 

,但我不能進一步的操作與myDiv1像:

$("#myDiv1").mouseover(function() { 
    $('#bottom_link').show(400); 
}); 
+2

沒有足夠的信息。請創建一個http://jsfiddle.net演示。 –

+2

IMO更改DOM元素的ID很粗略;你爲什麼這樣做? –

+0

我爲他做了一個演示,它工作正常http://jsfiddle.net/xTzrz/ –

回答

0

而不是選擇通過其ID的DIV通過類名選擇它。你會做

<div = "myDiv" class="myDiv"></div> 

$(".myDiv").mouseover(function() { 
......your code here....... 
}); 
0
<html> 
<head> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script> 
$(function(){ 
    $("#myDiv").text('Test1'); 
    $("#myDiv").attr('id', 'myDiv1'); 
    $("#myDiv1").text('Test2'); 
}); 
</script> 
</head> 
<body> 
<div id="myDiv">Test</div> 
</body> 
</html> 
1

這並不是說我有動態變化的ID一致,但你的問題可能是你正在試圖存在下的新ID之前,將事件處理程序附加到元素。嘗試使用jQuery's delegate來代替附加事件。

編輯:添加一些代碼$ .delegate不是學習最友好的功能...

$.delegate('#myDiv1', 'mouseover', function() { 
    $('#bottom_link').show(400); 
}); 

這將確保與ID「爲myDiv1」現在存在或在任何時間任何元素未來將會有這個事件處理程序綁定到它。

2

一個更好的辦法(IMO)要做到這一點是:

var myDiv = $("#myDiv"); 

這緩存的div作爲一個jQuery對象,所以你可以操縱這一切你喜歡,還可以做的事情有它無不得不再次選擇它。

如:

myDiv.attr("id", "someOtherId"); 
myDiv.css("background-color", "orange"); 

小提琴: http://jsfiddle.net/DWeSL/

編輯:

然後,您可以還事件綁定到這個樣:

myDiv.click(function(){ 
    alert("boo"); 
});