まず、私はJavascriptをかなり新しくしていると言って、この質問の序文を述べます。jQuery DOMオブジェクトと参照渡し
また、Javascriptオブジェクトは参照渡しであり、プリミティブは値[source]で渡されることも理解しています。私は別の多くの情報が含まれているJSONデータに引っ張っていると私は、このような別の<ul>
にあります<ul>
への情報のそれぞれ異なるタイプを配置する必要があります:言っ
<ul class="car-tree">
<li>
<label>Sports Cars</label>
<ul class="sport-cars">
<li>Porsche</li>
<li>Mercedes</li>
<li>BMW</li>
</ul>
</li>
<li>
<label>Super Cars</label>
<ul class="super-cars">
<li>Ferrari</li>
<li>Lamborghini</li>
</ul>
</li>
<li>
<!-- and so on... -->
</li>
</ul>
は、最も内側の<li>
タグ以外のすべてを含んでいると私はこのようにそれを埋めるためにしようとしている:あなたがこれを行うと、あなたが得る
var CarView = function(){
var buildCarTree = function(){
// Gets the JSON data from somewhere
var jsonData = grabJsonData();
// Grab the template and convert it into a jQuery object
var template = $(grabCarTreeTemplate());
// Adds sport car data to sports cars list
this.addCars(template.find('.sports-cars'), jsonData.sportsCars);
// Adds super car data to sports cars list
this.addCars(template.find('.super-cars'), jsonData.superCars);
// Add the car tree to some container
$('#container-trees').append(template);
}
var addCars = function(container, carData){
for(id in carData){
$('<li/>', {
text : carData[id].text
}).appendTo(container);
}
}
};
var view = new CarView();
view.buildCarTree();
データが追加されていないテンプレートがありますが、を通してconsole.log
ステートメントを追加すると、container
引数に追加されているデータを見ることができます。
:
を...あなたは、パラメータ自体を変更した場合...に供給されたアイテム には影響しませんパラメータ。あなたは
バックアップ伝播する パラメータの内部を、...変更した場合でも、私はappendTo
はjQueryオブジェクトの内部を変更するだろうと考え出しただろう。どうしたんだ?
はgrabJsonData'は、AJAX要求を行う 'ですか?その場合は、非同期の問題があります。 'grabJsonData'の内容を投稿して、修正方法を教えてください。 – glortho
これは問題ではありません。 addCars内でリストが正しく変更されているのがわかるのでJSONの部分は重要ではありませんが、その関数を残すとリストにはその変更が反映されません。 – Steve