2012-04-22 3 views
0

私はオブジェクトのグループをページングしています。それぞれのオブジェクトには、非表示のdivを開き、すべてのものの前にdivをポップするボタンがあります。私がしたいのは、ポップアップウィンドウ内にそのオブジェクトの属性をリストすることですが、javascriptコードからそのオブジェクトをフェッチする方法を理解できません。ここdjango jquery .loadオブジェクトの値

はjavascriptのである:ここ

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#create").click(function(){ 
      $("#popupContact").load("/cookbook/createrecipe #createform"); 
     }); 
     $("#button1").click(function(){ 
      $("#popupContact").load(load object information for button1); 
     }); 
     $("#button2").click(function(){ 
      $("#popupContact").load(load object information for button2); 
     }); 
    }); 
</script> 

はテンプレートです:

{% block content %} 
    {% autopaginate object_list 6 %} 
    <div id="object_cont"> 
      {% for object in object_list %} 
     <div id="object"> 
      <div id="button{{ forloop.counter }}">  
      <h4>{{ object.name }}</h4> 
      <h5>{{ object.author }}</h5> 
      <h5>Prep Time: {{ object.prep_time }} minutes</h5> 
      </div> 
     </div> 
    {% endfor %} 
    </div> 
    <div id="popupContact" class="popup"> 
    <a id="popupContactClose" style="cursor:pointer;float:right;">x</a> 
    </div> 
    <div id="backgroundPopup"> 
    </div> 
    {% paginate %} 
{% endblock %} 

基本的に私は、ボタンのdivに

おかげでネストされているオブジェクトを取得する方法が必要、 snackerfish

答えて

1

まず、マークアップが開始されています重複するidパラメータ "object"が生成されますが、これは有効なHTMLではありません。ただし、ボタンごとに個々のクリックハンドラを記述する必要はありません。

$('.button').click(function(){ 
    /* Do whatever with content */ 
}); 

jQueryのロードメソッドはGETリクエストを行います。したがって、動的に呼び出すURLを取得する必要がある場合は、アンロードタグを、ロードするURLを保持するボタンdivのどこかに追加することをお勧めします。覚えておくべき

{% for object in object_list %} 
    <div class="object"> 
     <div class="button{{ forloop.counter }}"> 
      <a href="{% url my_view object.property %}" style="display: none;"></a> 
      <h4>{{ object.name }}</h4> 
      <h5>{{ object.author }}</h5> 
      <h5>Prep Time: {{ object.prep_time }} minutes</h5> 
     </div> 
    </div> 
{% endfor %} 

$('.button').click(function(){ 
    var content = $.load($(this).children('a:first').attr('href')); 
    /* Do whatever with content */ 
}); 

もう一つは、彼らは単にあなたがしたいプレゼンテーションを得るために、必要としていないところヘッダータグを使用しないで、それは、タグにまたがるものだ、とCSS :)

希望そのためのものですあなたを助けます。

+0

これは間違いなく役に立ちます。私が見逃しているのは、が私の意見はレシピと呼ばれ、要求、cookbook.idとrecipe.idで渡されると言うものです。そのobject.propertyは何ですか?助けてくれてありがとう – snackerfish

+0

また、jsのコンテンツで何ができるのですか 私はobject.nameとobject.authorを取得したいと言っています。私はjsでこれを行うのですか? – snackerfish

+0

必要なコンテンツを返すビューアクションを呼び出すために必要なパラメータを渡す必要があります。私はあなたのポストのオブジェクト上でどのようなプロパティが利用できるのか分かりません。オブジェクトが料理ブックを表す場合は、cookbook.idなどを渡すことができます。これは実装によって異なります。 JavaScriptでは、DOMをトラバースして、ビューからHTMLに返されたプロパティを取得することができます。また、AjaxコールからJSONをコンテンツやその他の必要なプロパティに渡すこともできます。 – Brandon