1

我试图在我的代码中获取已检查列表项的索引,但无法找出方法。我的 HTML 代码如下 -

         <h2 data-dojo-type="dojox/mobile/RoundRectCategory">Select Your Range :</h2>
                <ul id="list" data-dojo-type="dojox/mobile/RoundRectList" data-dojo-props='select:"single"'>
                  <li data-dojo-type="dojox/mobile/ListItem" data-dojo-props='checked:true'>Within 1 KM</li>
                  <li data-dojo-type="dojox/mobile/ListItem" >Within 3 KM</li>
                  <li data-dojo-type="dojox/mobile/ListItem" >Within 5 KM</li>
                </ul>

我尝试使用 dojo.query 来访问选中的列表项,但它也不起作用。有人可以帮助我如何实现这一目标吗?

我的道场代码-

  dojo.query("#list>li:checked").forEach(function(node) { alert("in for loop"); });

我尝试使用下面的代码,它给了我一个与默认选择的列表项相对应的索引 0 的警报,但是当我选择任何其他列表项时,我仍然收到默认选择的列表项的警报。当我检查 Google chrome 的开发人员工具时,我发现当我选择任何其他列表项时,默认列表项的 data-dojo-props='checked:true' 不会更改为 false。这是 listitem 的正确行为吗?理想情况下,它应该更改为 false 并且选中的新列表项的属性应该更改为“true”,但这不会发生。谁能解释一下这种行为并告诉我获取所选列表项索引的最佳方法?

  dojo.query("#list>li[data-dojo-props='checked:true']").forEach(function(node,index) { alert("in for loop"+ index); }); 

注意 - 我决定在我的列表项中使用 dojo 单选按钮,它工作得很好,但我仍然希望在这方面获得帮助,只是为了了解这个功能。

4

1 回答 1

-1

通过使用 JQuery。

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<h2 data-dojo-type="dojox/mobile/RoundRectCategory" >Select Your Range :</h2>
                <ul id="list" data-dojo-type="dojox/mobile/RoundRectList" data-dojo-props='select:"single"'>
                  <li data-dojo-type="dojox/mobile/ListItem" data-dojo-props='checked:true'>Within 1 KM</li>
                  <li data-dojo-type="dojox/mobile/ListItem"  data-dojo-props='checked:true' >Within 3 KM</li>
                  <li data-dojo-type="dojox/mobile/ListItem" >Within 5 KM</li>
                </ul>
  <input type="button" value="get selected items" onclick="GetData()" />
<script type="text/javascript">
function GetData(){
var Value = "";

$("#list li").each(function(index,ele){
if($(ele).attr("data-dojo-props") === "checked:true")
Value += ","+$(ele).html();
});
alert(Value);
 }
</script>

</body>
于 2013-09-24T12:20:32.663 回答