2016-12-24 15 views
8

Trong ứng dụng của tôi, tôi có 4 liên kết với nhau ID s và 4 DIV với cùng ID như mỗi liên kết (Tôi sử dụng chúng cho neo-jumping).Remove Link trên cuộn

mã hiện tại của tôi:

<a href="#1" id="go1" class="btn" data-anchor="relativeanchor">One</a> 
<a href="#2" id="go2" class="btn" data-anchor="relativeanchor">Two</a> 
<a href="#3" id="go3" class="btn" data-anchor="relativeanchor">Three</a> 
<a href="#4" id="go4" class="btn" data-anchor="relativeanchor">Four</a> 

<div class="col-md-12 each-img" id="1"> 
    <img src="img/album-img.png"> 
</div> 

<div class="col-md-12 each-img" id="2"> 
    <img src="img/album-img.png"> 
</div> 

<div class="col-md-12 each-img" id="3"> 
    <img src="img/album-img.png"> 
</div> 

<div class="col-md-12 each-img" id="4"> 
    <img src="img/album-img.png"> 
</div> 

người dùng Đôi khi chỉ cần di chuyển tới div thứ hai id="2" đầu tiên trước khi họ click vào các nút và khi họ làm như vậy, họ được gửi đến đầu id="1" đầu tiên thay vì tiếp tục tiếp theo IDid="3".

Chỉ một nút hiển thị tại một thời điểm sử dụng CSS và khi liên kết được nhấp, tôi sẽ xóa liên kết đó.

CSS

a.btn{display: none}  
a.btn a:first-child{display: block !important;} 

jQuery

$(document).ready(function(){ 
    $('a.btn').click(function() { 
     $(this).remove(); // remove element which is being clicked 
    }); 
}); 

Làm thế nào tôi có thể đạt được vì vậy nếu người dùng cuộn xuống, mỗi liên kết có cùng ID như DIV bị xóa bỏ.

Ví dụ:Nếu người dùng cuộn xuống để <div class="col-md-12" id="1">, <a href="#" id="1" class="btn">One</a> bị loại bỏ và liên kết Tiếp theo sẽ là <a href="#" id="2" class="btn">Two</a> bấm vào.

PS: Đây là một trang năng động và ID s sẽ thay đổi, vì vậy chúng ta cần chọn khác có thể

Đây là những gì tôi đã cố gắng cho đến bây giờ, nhưng vấn đề là nó loại bỏ tất cả các liên kết và không đầu tiên duy nhất

$(function() { 
    var div = $('.each-img').offset().top; 
    $(window).scroll(function() { 
     var scrollTop = $(this).scrollTop(); 
     $('.each-img').each(function(){ 
      if (scrollTop >= div) { 
       $("a.btn:eq(0)").remove(); 
       //$("a.btn:first-child").remove(); 
      } 
     }); 
    }); 
}); 

PS: cách HTML & CSS được thiết lập không cần phải như thế này và tôi có thể thay đổi nó thành bất cứ điều gì mà sẽ tốt hơn cho các chức năng

+0

bạn không bao giờ nên sử dụng ID trùng lặp !! – yezzz

+0

Cảm ơn đúng, nhưng lý do tôi có cùng với bộ chọn và chọn liên kết – Rubioli

+0

Vâng, bạn cũng có thể sử dụng thuộc tính dữ liệu, chẳng hạn. BTW, bạn có biết rằng href của bạn sẽ không gửi người dùng đến div được liên kết không? Ngoài ra, bạn không nên chỉ sử dụng các số cho ID của ... http://stackoverflow.com/questions/5366702/is-it-always-bad-practice-to-start-an-id-with-a-number- css/5366744 # 5366744 – yezzz

Trả lời

4

Đó là không có vấn đề để làm cho nó năng động:

JSFiddle: https://jsfiddle.net/rc0v2zrw/

var links = $('.btn'); 
 

 
$(window).scroll(function() { 
 
    var scrollTop = $(this).scrollTop(); 
 
    links.each(function() { 
 
    var href = $(this).attr('href'); 
 
    var content = $(href); 
 
    if (scrollTop > content.offset().top) { 
 
     $(this).hide();  \t 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="position:fixed; top:0; left:0; right:0"> 
 
    <a href="#1" class="btn">One</a> 
 
    <a href="#2" class="btn">Two</a> 
 
    <a href="#3" class="btn">Three</a> 
 
    <a href="#4" class="btn">Four</a> 
 
</div> 
 

 
<div class="col-md-12" id="1"> 
 
    <img src="http://lorempixel.com/400/500/"> 
 
</div> 
 

 
<div class="col-md-12" id="2"> 
 
    <img src="http://lorempixel.com/450/500/"> 
 
</div> 
 

 
<div class="col-md-12" id="3"> 
 
    <img src="http://lorempixel.com/480/500/"> 
 
</div> 
 

 
<div class="col-md-12" id="4"> 
 
    <img src="http://lorempixel.com/500/500/"> 
 
</div>

+0

Cảm ơn @antishok. Làm việc như một nét duyên dáng :) – Rubioli

2

sử dụng scrollEvent nghe

$(window).scroll(function(e){ 
    if($(this)).scrollTop >= $('div#1').offset().top){ 
      $("a#1").hide(); 
    } 
}); 

Sử dụng cái gì đó như thế và nó sẽ làm việc .. Hope điều này giúp

+0

Cảm ơn @Daniyal, Tác vụ này chỉ hoạt động nhưng nó chỉ loại bỏ neo đầu tiên. Những gì tôi muốn đạt được là để loại bỏ bất cứ điều gì neo có cùng một ID là div khi họ di chuyển. Nếu họ cuộn xuống liên kết thứ ba, tôi muốn xóa tất cả liên kết 3 và không chỉ '# 1' – Rubioli

+0

sử dụng thêm câu lệnh nếu kiểm tra xem window.scrollTop> = div2, div3, div4 và sau đó ẩn a2, a3, a4 cho phù hợp ... –

4

tôi nghĩ rằng đây là nhiều hơn hoặc ít hơn những gì bạn đang sau:

JSFiddle

https://jsfiddle.net/wc0cdfhv/

Bạn nên lưu lại vị trí của các phần tử bên ngoài chức năng cuộn, theo cách này không cần tính toán mọi lúc.

Bạn cũng nên nhớ điều này sẽ không mở rộng quá rõ nếu bạn có nội dung động nhưng nếu bạn chỉ làm việc với 4 liên kết tĩnh thì nó sẽ hoạt động tốt.

$(function() { 
 
\t var scroll1 = $('#1').offset().top; 
 
\t var scroll2 = $('#2').offset().top; 
 
\t var scroll3 = $('#3').offset().top; 
 
\t var scroll4 = $('#4').offset().top; 
 
\t $(window).scroll(function() { 
 
    \t var scrollTop = $(this).scrollTop(); 
 
    if (scrollTop >= scroll4) { 
 
     $("#go1, #go2, #go3, #go4").hide(); 
 
    } 
 
    else if (scrollTop >= scroll3) { 
 
     $("#go1, #go2, #go3").hide(); 
 
     $("#go4").show(); 
 
    } 
 
    else if (scrollTop >= scroll2) { 
 
     $("#go1, #go2").hide(); 
 
     $("#go3, #go4").show(); 
 
    } 
 
    else if (scrollTop >= scroll1) { 
 
     $("#go1").hide(); 
 
     $("#go2, #go3, #go4").show(); 
 
    } 
 
    else { 
 
     $("#go1, #go2, #go3, #go4").show(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div style="position:fixed; top:0; left:0; right:0; background:#CCC"> 
 
<a href="#1" id="go1" class="btn" data-anchor="relativeanchor">One</a> 
 
<a href="#2" id="go2" class="btn" data-anchor="relativeanchor">Two</a> 
 
<a href="#3" id="go3" class="btn" data-anchor="relativeanchor">Three</a> 
 
<a href="#4" id="go4" class="btn" data-anchor="relativeanchor">Four</a> 
 
</div> 
 

 
<div class="col-md-12" id="1"> 
 
    <img src="https://www.myoodle.com/images/easyblog/616/2014042_Therapy_Dog_003.jpg"> 
 
</div> 
 

 
<div class="col-md-12" id="2"> 
 
    <img src="https://www.myoodle.com/images/easyblog/616/2014042_Therapy_Dog_003.jpg"> 
 
</div> 
 

 
<div class="col-md-12" id="3"> 
 
    <img src="https://www.myoodle.com/images/easyblog/616/2014042_Therapy_Dog_003.jpg"> 
 
</div> 
 

 
<div class="col-md-12" id="4"> 
 
    <img src="https://www.myoodle.com/images/easyblog/616/2014042_Therapy_Dog_003.jpg"> 
 
</div>

+0

Cảm ơn @timothyclifford hoạt động như một sự quyến rũ. Không phải là bất kỳ tùy chọn hoặc giải pháp nào cho nội dung động? – Rubioli

+0

Đây là một tùy chọn nhưng thay vì tham chiếu các neo và các div chứa hình ảnh trực tiếp, khi tải trang, bạn sẽ cần phải truy vấn các mục sử dụng tên lớp hoặc một cái gì đó tương tự. Tôi có thể thêm một ví dụ nếu bạn cần nếu điều này giải quyết câu hỏi của bạn xin vui lòng đánh dấu nó là câu trả lời :) – timothyclifford

+0

Cảm ơn bạn rất nhiều :) Điều này hoạt động tốt cho tĩnh yeah nhưng cho năng động, nó ngừng hoạt động kể từ khi tôi đi xa hơn 'ID' s không chỉ 1-4 và nó thay đổi để ví dụ 100. Tôi sẽ đánh giá cao nếu bạn có thể đưa ra một ví dụ khác như bạn đề cập :) Cảm ơn rất nhiều – Rubioli