Javascript JQuery在父位置更改时删除元素

Javascript JQuery在父位置更改时删除元素,javascript,jquery,html,css,nav,Javascript,Jquery,Html,Css,Nav,我正在制作一个带有粘性导航条的网站,当导航条到达页面顶部(用户向下滚动)时会出现一个符号,当导航条离开页面顶部(用户向上滚动)时会消失。到目前为止,我可以使符号出现,但不能重新出现 下面是导航的js代码和HTML: $(文档).ready(函数(){ 变量距离=$(“#导航栏”).offset().top, $window=$(window); $(窗口)。滚动(函数(){ 如果($window.scrollTop()=距离){ 如果($(“#导航符号”).length){ console.l

我正在制作一个带有粘性导航条的网站,当导航条到达页面顶部(用户向下滚动)时会出现一个符号,当导航条离开页面顶部(用户向上滚动)时会消失。到目前为止,我可以使符号出现,但不能重新出现

下面是导航的js代码和HTML:

$(文档).ready(函数(){
变量距离=$(“#导航栏”).offset().top,
$window=$(window);
$(窗口)。滚动(函数(){
如果($window.scrollTop()<距离){
$(“#导航”)。删除(
“
  • ”; } 如果($window.scrollTop()>=距离){ 如果($(“#导航符号”).length){ console.log(“不添加”) }否则{ $(“#nav”)。前置( “
  • ”; } } }); });
    
    
    当您调用该方法时,您现在没有删除节点

    • 不带参数的remove方法正在删除当前节点
    • 带参数的remove方法正在从提供的选择器中移除元素
    通过提供HTML,您将为未附加到DOM文档的节点生成选择器。因为他不在那里,所以移除它没有任何影响

    您可以尝试以下方法:

    $(document).ready(function() {
        var distance = $('#navbar').offset().top,
            $window = $(window);
    
        $(window).scroll(function() {
        if ($window.scrollTop() < distance) {
            $("#navSymbol").remove();
        }
    
        if ($window.scrollTop() >= distance) {
            if ($("#navSymbol").length) {
                console.log("not adding")
            } else {
                $("#nav").prepend("<li id=\"navSymbol\"><a href=\"#\">▲</a></li>");
            }
        }
    });
    
    $(文档).ready(函数(){
    变量距离=$(“#导航栏”).offset().top,
    $window=$(window);
    $(窗口)。滚动(函数(){
    如果($window.scrollTop()<距离){
    $(“#navSymbol”).remove();
    }
    如果($window.scrollTop()>=距离){
    如果($(“#导航符号”).length){
    console.log(“不添加”)
    }否则{
    $(“#nav”).prepend(“
  • ”); } } });
    您也可以使用jQuery hide函数隐藏元素,然后使用show函数再次显示元素

    $(文档).ready(函数(){
    var-previous_距离=0;
    $(窗口)。滚动(函数(){
    var distance=$('#navbar').offset().top;
    if(上一个_距离<距离){
    $(“#navSymbol”).hide();
    }
    否则{
    $(“#navSymbol”).show();
    }
    上一个距离=距离
    });
    });
    
    

    在调用“remove()”时,代码“remove”方法删除启动调用的jQuery集合中包含的节点时出错

    你可以用

     $("#nav").text("About");
    
    而不是

    $("#nav").remove(
        "<li id=\"navSymbol\"><a href=\"#\">▲</a></li>");
    
    $(“#导航”)。删除(
    “
  • ”;
    $(文档).ready(函数(){
    变量距离=$(“#导航栏”).offset().top,
    $window=$(window);
    $(窗口)。滚动(函数(){
    如果($window.scrollTop()<距离){
    $(“#navSymbol”).remove();
    }
    如果($window.scrollTop()>=距离){
    如果($(“#导航符号”).length){
    console.log(“不添加”)
    }否则{
    $(“#nav”)。前置(
    “
  • ”; } } }); });
    
    

    请使用remove()函数删除任何元素,因为jquery提供了删除特定元素的函数。

    第二次出现的节点是否有问题,或者只是节点没有消失?它只是没有消失,没有出现问题。
    $(document).ready(function() {
    
    var distance = $('#navbar').offset().top,
    $window = $(window);
    
    
    $(window).scroll(function() {
    if ($window.scrollTop() < distance) {
      $("#navSymbol").remove();
    
    
    }
    
    if ($window.scrollTop() >= distance) {
      if ($("#navSymbol").length) {
        console.log("not adding")
    
      } else {
        $("#nav").prepend(
          "<li id=\"navSymbol\" ><a href=\"#\">▲</a></li>");
      }
    }
    
    
    });
    
    });