选择选项不起作用

时间:2011-08-09 15:40:41

标签: jquery xml select mobile

我对jquery很新,我不是“风滚草”) - ;所以请记住这一点。

我有一个jquery移动应用程序,当前将数据发布到api。

我有三个基于api生成的每日,每周和每月活动的xml文档。我需要从三个选项(上一天摘要,上一周摘要和上一个月摘要)中选择用户选择的值来调用已经为该时间段提供的正确XML文档,解析XML文档以找到三个节点,然后将这些节点中的文本写入到jquery移动应用程序的不同页面的div中。

现在应用程序没有调用选择更改功能。我很欣赏任何关于我在这个问题上做错了什么的见解以及改善我在这里的整体工作的任何其他建议。

XML文档结构如下:

<StatusModel>

<Uid>
 xxxxxxx
 </Uid>

<Created>
2011-08-02T08:57:39.377
</Created>

<User>
xxxxxx
</User>

<Level>
x
</Level>

<Doing>
xxxxx
</Doing>

<Thinking>
xxxxx
</Thinking>

</StatusModel> 

选择的html如下:

 <div data-role="fieldcontain">
 <label for="summaries" class="select">Review a summary of your scores and notes:</label>
   <select name="summaries" id="summaries" data-native-menu="false">
      <option value="time_period" selected>Choose a time period</option>
      <option value="Previous_Day_Summary">Previous Day Summary</option>
      <option value="Last_Week_Summary">Last Week Summary</option>
      <option value="Last_Month_Summary">Last Month Summary</option>
     </select>  
 </div>

脚本如下:

$(function() {

$('[name = "summaries"]').change(function() {

alert("selection called");

$(this).children(":selected").text();

//getting the text from the summaryreviews form selection

var newVal = $("#summaries").val();

//newurl builds the url based on the timeframe chosen in the summaryreviews select box

var newurl = $("http://somedomainname/api/list" + "newVal");


$.ajax( {
type: "GET",
url: (newurl),
cache: false,
dataType: "xml",
success: summaryxml

});

function summaryxml(xml) {

    //parse the xml document including children using the *;

$(xml).find(*).each(function() {

    var level = $(this).find("level").text();
    var doing = $(this).find("doing").text();
    var thinking = $(this).find("thinking").text();


$('<li>' + 'level' + '<br />' + 'doing' + '<br />' + 'thinking' +  '</p></li>').appendTo("#summarylist");

//refresh the summarylist

$("#summarylist").listview('refresh');

    });
}

});

 });

我要填充的div位于另一个jquery移动页面

<div data-role="page" id="summarynotes" data-theme="d" data-position="fixed" data-transition="slide">
<div data-role="header">

</div>


<div data-role="content" id="summarize" data-theme="d">


<ul id="summarylist" data-role="listview">

// Display Day, Week, or Month summary notes here


</ul>

<div data-role="footer" data-position="fixed">

</div>
</div>

2 个答案:

答案 0 :(得分:1)

从改变开始

$(xml).find(*).each(function() { 

进入

$(xml).find('*').each(function() {

如果你使用一个带语法高亮的好IDE,你可能更容易发现这种错误。

祝你好运。

@ Spycho的评论:它适用于Firefox,但不适用于IE / Opera ......

答案 1 :(得分:1)

一些希望有所帮助的想法:

  • 您的意思是在JS的第1行调用document.ready吗?即$(function() {
  • 第3行 - 为什么不通过其ID使用select地址? $('#summaries').change()
  • var newurl = $("http://somedomainname/api/list" + "newVal"); - 这将评估为http://somedomainname/api/listnewVal。那是你的意图吗?