2012-05-13 39 views
4

JQueryを使用して、次のJavaScriptコードを複製して、ページを更新する必要がないようにします。私がJqueryで抱えている主な問題は、選択したいdivが、何百という数のコメントIDに基づいて変化するということです。どんな助けや提案も非常に感謝しています!Jqueryで動的Div要素を表示/非表示にする方法

<head> 
<script type="text/javascript"> 
<!-- 
function toggle_visibility(id) { 
    var e = document.getElementById(id); 
    if(e.style.display == 'block') 
     e.style.display = 'visible'; 
    else 
     e.style.display = 'block'; 
} 
//--> 
</script> 
</head> 
<body> 
{% for comment in comments %} 
<a href="#" onclick="toggle_visibility('make_reply_{{comment.id}}');">Reply</a> 
<div id="make_reply_{{comment.id}}"> 
<form name="titleform" action="/{{slug}}/reply/" method = "post"> 
    <input type="hidden" name="id" value="{{comment.id}}"</input> 
{% csrf_token %} 
<textarea name = "comment" value="" rows="7" cols="50"></textarea><br> 
<input type="submit" value="Submit"/> 
</form> 
</div> 
{% endfor %} 
</body> 

答えて

2

あなたはjQueryのを使用しているので、代わりに$.toggle()を使用します。

$('#' + id).toggle(); 
1
function toggle_visibility(id) { 
    var $e = $('#' + id); 
    if($e.is(':visible')) 
     $e.hide(); 
    else 
    $e.show(); 
} 

か、単に$e.toggle();

function toggle_visibility(id) { 
    var $e = $('#' + id); 
    $e.toggle(); 
} 
0

私は以下のようにはるかに簡単な方法で、私はそれだろうこれをしなければならなかった場合:

HTML:

{% for comment in comments %} 
<div id="{{comment.id}}"> // this div will separate each iterate elements 
    <a href="#">Reply</a> // no inline method required in jquery 
    <form name="titleform" action="/{{slug}}/reply/" method = "post"> 
    <input type="hidden" name="id" value="{{comment.id}}"/> 
    <textarea name = "comment" value="" rows="7" cols="50"></textarea><br> 
    <input type="submit" value="Submit"/> 
    </form> 
</div> 
{% endfor %} 

jqueryの

$('a').click(function(){ 
    $(this).next('form').toggle(); 
}); 

フィドル:http://jsfiddle.net/VjthL/2/

関連する問題