4

JQueryを使用して、次のjavascriptコードを複製し、ページを更新する必要がないようにします。私がJqueryで抱えている主な問題は、選択したいdivが、数百になる可能性のあるコメントIDに基づいて変化することです。どんな助けや提案も大歓迎です!

<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>
4

4 に答える 4

3

ひやデモhttp://jsfiddle.net/gpwnn/ _

API リンク: http://api.jquery.com/toggle/

コード

toggle_visibility = function (id){

   var e = $("#"+id);
   e.toggle();
}​
于 2012-05-13T06:16:31.677 に答える
2

jQuery を使用しているため、$.toggle()代わりに次を使用します。

$( '#' + id ).toggle();
于 2012-05-13T06:16:07.823 に答える
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();
}
于 2012-05-13T06:16:56.343 に答える
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/

于 2012-05-13T06:38:03.657 に答える