2011-10-20 4 views
0

"クリック"私はmyDivのIDをmyDiv1に変更しています。今度はmyDivを置き換えた新しいID(myDiv1)を使用したいと思います。IDを置き換え、新しいIDを使用してJqueryのプロセスを続行します

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

が、私のようなmyDiv1とさらに操作することはできません。代わりにそのIDによって、あなたのdivを選択する

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

ない十分な情報。 http://jsfiddle.netデモを作成してください。 –

+2

DOM要素のIDを変更するIMOはかなりスケッチです。どうしてそんなことをするのか? –

+0

私は彼のデモを行いましたし、うまく動作します。http://jsfiddle.net/xTzrz/ –

答えて

0

はclassnameでそれを選択します。あなたは、私が動的に変化するIDが同意するが、あなたの問題は、あなたがそれが新しいIDの下に存在する前に、要素にイベントハンドラをアタッチしようとしていることであってもよいことはない

<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

を行うだろう。代わりにjQuery's delegateを使用してイベントを添付してください。

編集:$ .delegateとしていくつかのコードを追加することは学ぶためのフレンドリーな機能ではありません...

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

これは、現在存在するID「myDiv1」またはのいずれかの時点でその任意の要素を保証します将来、このイベントハンドラがバインドされます。これを行うには

2

より良い方法は、(IMO)のようになります。

var myDiv = $("#myDiv"); 

これはjQueryオブジェクトとしてdiv要素をキャッシュするので、あなたは、あなたが好きなすべての、まだなくて、それで物事を行うことができるそれを操作することができます再度選択する必要があります。

例:

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

フィドル: http://jsfiddle.net/DWeSL/

編集:

それからまた、このようにイベントをバインドすることができます。

myDiv.click(function(){ 
    alert("boo"); 
}); 
関連する問題