2012-10-17 56 views
0

我有以下的HTML代码。它是一个可折叠的listItems中的内弹出:用jquery附加到div

<div data-role="popup" id="wavelistPopup" class="ui-content"> 
    <div id="wavlistContainer" data-role="collapsible-set" data-theme="c" data-content-theme="c" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d" style="margin:0; width:250px;"> 
     <div data-role="collapsible" data-inset="false"> 
      <h2>Wave1</h2> 
      <ul data-role="listview"> 
       <li>Entfernung: </li> 
       <li>Von Autor:</li> 
       <li>Schwierigkeit:</li> 
       <li>Beschreibung:</li> 
       <li><a data-rel="dialog">Erfahrungsberichte</a></li> 
       <li><a data-rel="dialog">Wissenswertes</a></li> 
       <li><a data-rel="dialog">&Auml;hnliche Waves</a></li> 
      </ul> 
      <button>Sync</button> 
      <button>L&ouml;schen</button> 
     </div><!-- /collapsible --> 

    </div><!-- /collapsible set --> 
</div><!-- /popup --> 

现在我想另一个可折叠添加到wavlistcontainer用下面的代码:。为此,我首先做一个ajax调用,并在回调函数中工作。

function populateWaveList(){ 
    console.log("populateWaveList"); 
    requestWavesInArea(position.position.coords.latitude, position.position.coords.longitude, 
      position.position.coords.latitude+5, position.position.coords.longitude+5, 10, 
      function(waves){ //after AJAX call 
      console.log(waves); 
       for(var wavei in waves){ // for every element to add 
        var content = ""; 
        var wave = waves[wavei]; 
        console.log(wave); 
        var content =+ jQuery('somestring';  '<div data-role="collapsible" data-inset="false">'+ 
           '<h2>'+wave.name+'</h2>'+ 
           '<ul data-role="listView">'+  
             '<li>Entfernung von Autor: '+'...'+'</li>'+ 
             '<li>Autor: '+wave.creatorname+'</li>'+ 
             '<li>Beschreibung: '+wave.description+'</li>'+ 
             '<li>Umfang: '+'...'+'</li>'+ 
             '<li>Terrain: '+wave.terrainType+'</li>'+ 
             '<li>Autor: '+wave.creatorname+'</li>'+ 
             '<li>Schwierigkeit: '+wave.difficulty+'</li>'+ 
             '<li>ID: '+wave.waveId+'</li>'+ 
             '<li>Datum: '+wave.created+'</li>'+ 
            '</ul>'+ 
            '<button disabled="disabled">Sync</button>'+ 
            '<button disabled="disabled">L&ouml;schen</button>'+ 
           '</div>'); 
        console.log(content); // returns 'false' 
        $('#wavelistContainer').append(content); 
       } 
       $('#wavelistPopup').popup('open', { x : 460, y : 180 }); 
    }); 
} 

当我打印的内容,我得到false这greately混淆了我。任何人都可以帮助我吗?

谢谢

+2

如果您使用的答案改变的问题,他们得到无关紧要......这不是你应该如何使用SO ... –

+0

你是对的,我再次执行错误:D – MJB

回答

1

两个问题:

  • 你使用=+代替+=
  • 你转换很快的HTML到jQuery对象

这条线:

​var content =+ 'somestring'; 

相同

​var content = 0 + 'somestring'; 

等产生NaN。取而代之的

content =+ jQuery('<div data-role="collapsible" data-inset="false">'+ 

content += '<div data-role="collapsible" data-inset="false">'+ 

请注意,您应该也为更好的性能,仅生成一个content字符串和循环之前添加它只有一次(声明它,并追加它在循环之后)。

+0

谢谢。我测试并编辑了我的帖子。现在我弄错了。 – MJB

+0

如果你用'var content =“构建它,我不认为你会弄错。内容+ ='somestring';'。检查你运行的代码。 –

+0

我相应地编辑了我的代码。现在我遇到了创建的元素不可折叠的问题。他们直接显示。 – MJB

1

你有问题,你的代码

content =+ jQuery('<div data-role="collapsible" data-inset="false">'+ 
--------------^-----^ 
            '<h2>'+wave.name+'</h2>'+ 
            '<ul data-role="listView"'>+  
--------------------------------------------------------------^ 

应该

content +='<div data-role="collapsible" data-inset="false">'+ 
            '<h2>'+wave.name+'</h2>'+ 
            '<ul data-role="listView">'+ 
+0

我相应地编辑了我的代码。现在我遇到了创建的元素不可折叠的问题。他们直接显示。 – MJB

+0

@MJB代码看起来很好...很难弄清楚有什么问题..检查所有的div都正确关闭..? – StaticVariable

+0

只有一个div,关闭可折叠的div,并关闭。 – MJB