我正在寻找一种解决方案,我可以将一个元素锚定到不同的部分。
<a href="#" id="navigate">Show more</a>
<div class="jumbotron" id="customer">
<div class="container">
</div>
</div>
<div class="jumbotron" id="features">
<div class="container">
</div>
</div>
<div class="jumbotron" id="contact">
<div class="container">
</div>
</div>
在上面的代码中,如果我点击Show more
,我应该转到#customer
。此按钮将保留在页面的左下角。现在,如果我再次点击相同的Show more
,则应该转到#features
。最后当我在#contact
时,按钮应该变为“转到顶部”。
是否有任何jquery来实现它?
答案 0 :(得分:2)
<强> HTML 强>
<a href="#" id="navigate" data-jump="0">Show more</a>
<div class="jumbotron" id="customer">
<div class="container">CUSTOMER</div>
</div>
<div class="jumbotron" id="features">
<div class="container">FEATURES</div>
</div>
<div class="jumbotron" id="contact">
<div class="container">CONTACT</div>
</div>
<强>的jQuery 强>
$(function () {
$("#navigate").click(function (e) {
$(this).data("jump", $(this).data("jump")+1);
switch ($(this).data("jump")) {
case 1:
$(document).scrollTop($("#customer").offset().top);
break;
case 2:
$(document).scrollTop($("#features").offset().top);
break;
case 3:
$(document).scrollTop($("#contact").offset().top);
break;
default:
$(document).scrollTop(0);
$(this).data("jump",0)
break;
}
e.preventDefault();
});
});
答案 1 :(得分:1)
下面的代码在普通浏览器中运行,但是当我尝试运行JSFiddler时,那里的点击顺序就不同了。无论如何,它在普通浏览器中工作:
$( "#navigate" ).on( "click", function() {
var text = $( this ).text()
var href = $( this ).attr('href');
if (href == "#") {
$( this ).attr('href', '#customer');
}
else if (href == "#customer") {
$( this ).attr('href', '#features');
}
else if ((href == "#features") && (text == "Show more")) {
$( this ).text('Go to Top');
$( this ).attr('href', '#contact');
}
else if ((href == "#contact") && (text == "Go to Top")) {
$( this ).text('Show more');
$( this ).attr('href', '#');
$( this ).focus();
}
});
关于Button的CSS定位使用fixed:
a {
position:fixed;
bottom:1px;
left:1px;
}
答案 2 :(得分:0)
每次点击按钮,根据href
的值找到当前值,根据需要更新href
属性。
例如,现在href
导航到“客户”,然后点击后,读出href
的值,我们发现它指向customer
,然后我们应该将href
的值更新为features
部分。
答案 3 :(得分:0)
基本理念可能是这样的:
$("#navigate").attr('href', '#customer');
$("#navigate").click(function(){
if($(this).attr('href') == '#customers'){
$(this).attr('href', '#features');
}else if($(this).attr('href') == '#features'){
$(this).attr('href', '#contact');
}else {
$(this).attr('href', '#customer');
}
});