jquery.prepend克隆错误

jquery.prepend克隆错误,jquery,prepend,cloning,Jquery,Prepend,Cloning,当屏幕80时,我试图将一个项目添加到导航栏。此项目的多个副本正在插入我的主导航。有人能帮我理解为什么会这样吗?你可以通过去看发生了什么 $(函数(){ 变量$window=$(window); var$width=$(window.width(); 函数windowWidth(){ 如果($width

当屏幕<480px且滚动>80时,我试图将一个项目添加到导航栏。此项目的多个副本正在插入我的主导航。有人能帮我理解为什么会这样吗?你可以通过去看发生了什么

$(函数(){
变量$window=$(window);
var$width=$(window.width();
函数windowWidth(){
如果($width<480){
函数top(){
var$top=$window.scrollTop();
如果($top<80){
$(“.main nav”).css({
“位置”:“,
“宽度”:“99.5%”
});
$(“.粗线标题”).css(“显示”,“粗线标题”);
}否则{
var$homeTab=$('
  • ); $(“.main nav li”).css({ '位置':'固定', “宽度”:“100%”, “顶部”:“0”, “左”:“0”, “页边距顶部”:“0” }); $(“#主导航”).prepend($homeTab); $(“.粗行标题”).css(“显示”、“无”); } }; $(窗口)。滚动(顶部); } }; 窗宽(); });
    我试图重现你的错误,但没有机会,也许我遗漏了什么 不管怎样,我想你需要添加一个标志来判断数据是否在之前添加过,因为你的条件不止一次是真的,而且在你滚动的时候

    var added = false; 
    $(function() {
        var $window = $(window);
        var $width = $(window).width();
        function windowWidth() {
            if ( $width< 480 ) {
                function top() {
                    var $top = $window.scrollTop();
                    if( $top < 80 ) {
                       $(".main-nav").css({
                          'position': '',
                          'width': '99.5%'
                       }); 
                       $(".thick-line-header").css("display",""); 
                    }
                    else {
                       var $homeTab = $('<li class="home"><a href="#top" >test</a></li>');
                       $(".main-nav li").css({
                          'position': 'fixed',
                          'width': '100%', 
                          'top':'0', 
                          'left':'0', 
                          'margin-top':'0'
                       });
                       if(!added) {
                          $("#main-nav").prepend($homeTab);
                          added = true; 
                       }
                       $(".thick-line-header").css("display","none");    
                    }
                 };
                 $(window).scroll(top);
              }
           };
           windowWidth();
        });
    
    var added=false;
    $(函数(){
    变量$window=$(window);
    var$width=$(window.width();
    函数windowWidth(){
    如果($width<480){
    函数top(){
    var$top=$window.scrollTop();
    如果($top<80){
    $(“.main nav”).css({
    “位置”:“,
    “宽度”:“99.5%”
    }); 
    $(“.粗线标题”).css(“显示”,“粗线标题”);
    }
    否则{
    var$homeTab=$('
  • ); $(“.main nav li”).css({ '位置':'固定', “宽度”:“100%”, “顶部”:“0”, “左”:“0”, “页边距顶部”:“0” }); 如果(!已添加){ $(“#主导航”).prepend($homeTab); 添加=真; } $(“.粗行标题”).css(“显示”、“无”); } }; $(窗口)。滚动(顶部); } }; 窗宽(); });

    我希望这能有所帮助:)

    你给出了一个位置:固定在列表项上。您需要在容器上设置“固定”选项。e、 g

    $(".main-nav").css({'position': 'fixed', 'width': '100%', 'top':'0', 'left':'0', 'margin-top':'0'});
    
    而不是

    $(".main-nav li").css({'position': 'fixed', 'width': '100%', 'top':'0', 'left':'0', 'margin-top':'0'});
    

    希望这有帮助

    哎呀,我忘了把它换回去。在我开始胡闹之前,我就是这么想的。。。谢谢这是有道理的,因为函数在每次有人滚动时都会触发,除非我停止编程,否则元素会继续添加到函数中。我试图使用你介绍的if(!add)部分,但firefox不喜欢。我一直在我的控制台中得到这个错误(添加未定义)。好吧,我不再每次滚动时都会让控制台崩溃,但它看起来并不是在元素前面。
    $(".main-nav li").css({'position': 'fixed', 'width': '100%', 'top':'0', 'left':'0', 'margin-top':'0'});