显示/隐藏列表项if-statement div

时间:2012-08-23 15:15:34

标签: javascript html5 dojo

我是javascript的新手,特别是dojo而且我坚持了,我假设任务非常简单,但我无法解决它。

基本上我要做的是以下内容:

当我点击listitem时,我应该被发送到另一个视图。我这样做:

<li data-dojo-type="dojox.mobile.ListItem"
            data-dojo-props="moveTo:'#'" onClick="transitionTo('#recommend',1);">Recommend App</li>

现在,id = recommended`的div有2个列表项。

<div id="recommend" data-dojo-type="dojox.mobile.ScrollableView">
        <div class="belowTab" style="width: 100%;">&nbsp;</div>
            <ul data-dojo-type="dojox.mobile.RoundRectList">
                <li data-dojo-type="dojox.mobile.ListItem">via Email</li>
                <li data-dojo-type="dojox.mobile.ListItem"
                    data-dojo-props="moveTo:'#'" onClick="postToWall();">via Facebook</li>
</div>
            </ul>

如果某个特定函数返回true,我想让两个列表项都可见,否则隐藏第二个listitem并显示第一个。 我想知道逻辑以及如何处理将if语句与div一起集成的想法

1 个答案:

答案 0 :(得分:0)

有一个非常难以理解的创建事件挂钩的方法作为标记,我将在这里演示。但是,最好在代码库中创建一个函数,然后将其设置为dojoProps属性,例如function myonclick() { ... }<div data-dojo-type="dijit._Widget" data-dojo-props="onClick: myonclick"></div>

要实现这一点,您需要确定View小部件提供的事件。简单的方法是打开dojotoolkit-src/dojox/mobile/View.js文件 - 您要查找的文件可能是onStartView || onBeforeTransitionIn

通过标记,我们现在为onBefore创建dojo /方法,以便您可以操作列表中的子项。顺便说一下,你有一个迷路的关闭</div>标签。

<div id="recommend" data-dojo-type="dojox.mobile.ScrollableView">
    <div class="belowTab" style="width: 100%;">&nbsp;</div>
    <ul data-dojo-type="dojox.mobile.RoundRectList">
        <li data-dojo-type="dojox.mobile.ListItem">via Email</li>
        <li data-dojo-type="dojox.mobile.ListItem"
              data-dojo-props="moveTo:'#'" onClick="postToWall();">via Facebook</li>
    </ul>

    <script type="dojo/method" event="onBeforeTransitionIn" args="moveTo, dir, transition, context, method">
          // onBeforeTransitionIn(moveTo, dir, transition, context, method):
          var listWidget = dijit.byNode(dojo.query("#recommended ul")[0]);
          // say you have a function with true/false return, if item should show
          dojo.forEach(listWidget.getChildren(), function(Item, idx) {
              dojo.style(Item.domNode, {
                   display: showItem(Item) ? '' : 'none'
              });
          });
    </script>
</div>