【问题标题】:Target first and last article on a page定位页面上的第一篇和最后一篇文章
【发布时间】:2020-06-30 04:21:19
【问题描述】:

我在这里帮助一个学生。他们有模板,其中包含带有一些锚标签的文章。这些锚标记代表“上移、下移和移除”。

这些文章将动态更改位置。

我正在寻找的是:当文章首先出现在页面上时,应该删除“上移”锚点。如果文章位于底部/最后位置,则应移除“下移”锚。

如果文章处于中间位置,则所有锚点都必须可用。

我知道我可以将类应用于页面上的第一篇和最后一篇文章,但是我如何才能专门针对这些文章而不将它们放在列表中。

<script type="text/template" id="message-edit-item-template">
##    $(".actions").first().children().remove(".move-up")
##    $(".actions").last().children().remove(".move-down");
##  ^ this is just me experimenting. I added the move-up and move-down classes to the anchors below, but they can be removed if not needed
<article class="well" data-message-id="<%= data.id %>">
    <div class="message">
        <div class="highlight clearfix">
            <div class="actions">
                <a href="#" data-remove="true" class="pull-right" title="Remove"><i class="fa fa-close"></i> Remove</a>
                <a href="#" data-move-up="true" class="pull-right move-up" title="Move Up"><i class="fa fa-arrow-up"></i> Move Up</a>
                <a href="#" data-move-down="true" class="pull-right move-down" title="Move Down"><i class="fa fa-arrow-down"></i> Move Down</a>
            </div>
        </div>
        <div class="form-group">
            <label>Title</label>
            <input type="text" name="title" value="<%= data.title %>" class="form-control"/>
        </div>
        <div class="form-group">
            <label>Message</label>
            <textarea name="message" class="form-control"><%= data.message %></textarea>
        </div>
    </div>
</article>
</script>

【问题讨论】:

  • 所有&lt;article&gt; 元素都是彼此的兄弟吗?

标签: javascript jquery html css


【解决方案1】:

您应该为此使用 CSS。

.actions:first-child .move-up, .actions:last-child .move-down {
   display: none;
}

当您添加或添加新元素时,您的浏览器将根据它们是否与 CSS 选择器匹配来自动显示/隐藏这些元素。

见::first-child:last-child

【讨论】:

    【解决方案2】:

    fixNavigation() 稍有不同,以后可以重用

    $(document).ready(function() {
      fixNavigation();
    });
    
    function fixNavigation() {
      $('a.pull-right').show();
      $('.well:first a.move-up').hide();
      $('.well:last a.move-down').hide();
    } 
    

    【讨论】:

      【解决方案3】:

      隐藏/显示呢?

      如果您需要按钮在文章动态更改其位置时再次出现,则隐藏按钮而不是删除 - 没有理由删除它们。

      your_function_to_change_dynamically_articles_positions(){
        // some code...
        $(".move-up, .move-down").hide();
        $(".move-up:not(:first)").show();   
        $(".move-down:not(:last)").show();
      }
      

      [更新的 JSfiddle]

      JSFiddle

      $(".move-up").click(function(){
          var $parent = $(this).closest('article');
          $parent.insertBefore($parent.prev()); 
          showHide(); 
      });
      
       $(".move-down").click(function(){
          var $parent = $(this).closest('article');
          $parent.insertAfter($parent.next());
          showHide(); 
      });
      
      $(".remove").click(function(){
          $(this).closest('article').remove();
          showHide();
      });
      
      function showHide(){
          $(".move-up, .move-down").show();
          $(".move-up:first").hide();   
          $(".move-down:last").hide();
      }
      
      showHide();
      

      【讨论】:

      • 看起来不错!我只会将名称 showHide 更改为 fixNavigation。
      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      相关资源
      最近更新 更多