如何启用和禁用链接?
How to enable and disable a link?
我有一种内容滑块,其工作方式如下:
$('.boxes:not(:first)').hide();
$(".links a:first").addClass("selected");
$(".links a").click(function() {
var activeLink = $(this).attr("href");
$(".links a").removeClass("selected");
$(this).addClass("selected");
$('.boxes').hide();
$(activeLink).fadeIn();
});
当您点击一个框时,它会显示下一个框并设置下一个框 link 也处于活动状态(这很好!):
$('.boxes').click(function(){
var $activeBox = $(this);
$('.boxes').hide();
$activeBox.next().show();
var $activelink = $(".selected");
$activelink.removeClass("selected");
$activelink.next().addClass("selected");
});
我想要实现的是禁用所有 link 一次(box1、box2、box3、box4、box5),第一个除外,这样用户只需单击 box1 就可以看到下一个框。
我的问题:如何禁用除第一个以外的所有 link 并启用下一个方框 link,因为方框被单击了?
直播:http://jsfiddle.net/13mg30Lf/3/
提前致谢!
要用 jQuery 禁用 link :
$('#box1').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
这将阻止 hyperlink 的默认行为,即访问指定的 href。
如果要禁用特定的link,只需在此函数中添加一个条件,例如禁用具有class "disabled"
的所有元素
您可以尝试这样的操作:http://jsfiddle.net/13mg30Lf/5/
$(".links a:not(:first)").attr("disabled","disabled");
$('.boxes:not(:first)').hide();
$(".links a:first").addClass("selected");
$(".links a").click(function() {
if ($(this).attr("disabled") != "disabled"){
var activeLink = $(this).attr("href");
$(".links a").removeClass("selected");
$(this).addClass("selected");
$('.boxes').hide();
$(activeLink).fadeIn();
}
});
$('.boxes').click(function(){
var $activeBox = $(this);
$('.boxes').hide();
$activeBox.next().show();
var $activelink = $(".selected");
$activelink.removeClass("selected");
$activelink.next().addClass("selected");
$activelink.removeAttr("disabled");
});
更干净一些,IMO:http://jsfiddle.net/13mg30Lf/12/
HTML
<div class="links">
<a href="#box1" class="disabled" data-index="1">Box1</a> >
<a href="#box2" data-index="2">Box2</a> >
<a href="#box3" class="disabled" data-index="3">Box3</a> >
<a href="#box4" class="disabled" data-index="4">Box4</a> >
<a href="#box5" class="disabled" data-index="5">Box5</a>
</div>
<div class="container">
<div id="box1" class="boxes" data-index="1">BOX 1</div>
<div id="box2" class="boxes hide" data-index="2">BOX 2</div>
<div id="box3" class="boxes hide" data-index="3">BOX 3</div>
<div id="box4" class="boxes hide" data-index="4">BOX 4</div>
<div id="box5" class="boxes hide" data-index="5">BOX 5</div>
</div>
JS
function ShowBox(index) {
if ($('.boxes[data-index="' + index + '"]').length) { // If a next box exists
$('.boxes').addClass('hide'); // Hide all boxes
$('.boxes[data-index="' + index + '"]').removeClass('hide'); // Show the next box
$('.links a').addClass('disabled'); // Hide all links
$('.links a[data-index="' + index + '"]').next('a').removeClass('disabled'); // Show the current link
}
}
$('.links a, .boxes').click(function (e) {
if (!$(this).hasClass('disabled')) { // If we don't have a disabled class
if ($(this).hasClass('boxes')) { // If we're clicking the box
ShowBox(parseInt($(this).attr('data-index'))+1); // Use next index
} else { // Else (clicking link)
ShowBox($(this).attr('data-index')); // Use current index
}
}
});
我有一种内容滑块,其工作方式如下:
$('.boxes:not(:first)').hide();
$(".links a:first").addClass("selected");
$(".links a").click(function() {
var activeLink = $(this).attr("href");
$(".links a").removeClass("selected");
$(this).addClass("selected");
$('.boxes').hide();
$(activeLink).fadeIn();
});
当您点击一个框时,它会显示下一个框并设置下一个框 link 也处于活动状态(这很好!):
$('.boxes').click(function(){
var $activeBox = $(this);
$('.boxes').hide();
$activeBox.next().show();
var $activelink = $(".selected");
$activelink.removeClass("selected");
$activelink.next().addClass("selected");
});
我想要实现的是禁用所有 link 一次(box1、box2、box3、box4、box5),第一个除外,这样用户只需单击 box1 就可以看到下一个框。
我的问题:如何禁用除第一个以外的所有 link 并启用下一个方框 link,因为方框被单击了?
直播:http://jsfiddle.net/13mg30Lf/3/
提前致谢!
要用 jQuery 禁用 link :
$('#box1').click(function(e) {
e.preventDefault();
//do other stuff when a click happens
});
这将阻止 hyperlink 的默认行为,即访问指定的 href。
如果要禁用特定的link,只需在此函数中添加一个条件,例如禁用具有class "disabled"
的所有元素您可以尝试这样的操作:http://jsfiddle.net/13mg30Lf/5/
$(".links a:not(:first)").attr("disabled","disabled");
$('.boxes:not(:first)').hide();
$(".links a:first").addClass("selected");
$(".links a").click(function() {
if ($(this).attr("disabled") != "disabled"){
var activeLink = $(this).attr("href");
$(".links a").removeClass("selected");
$(this).addClass("selected");
$('.boxes').hide();
$(activeLink).fadeIn();
}
});
$('.boxes').click(function(){
var $activeBox = $(this);
$('.boxes').hide();
$activeBox.next().show();
var $activelink = $(".selected");
$activelink.removeClass("selected");
$activelink.next().addClass("selected");
$activelink.removeAttr("disabled");
});
更干净一些,IMO:http://jsfiddle.net/13mg30Lf/12/
HTML
<div class="links">
<a href="#box1" class="disabled" data-index="1">Box1</a> >
<a href="#box2" data-index="2">Box2</a> >
<a href="#box3" class="disabled" data-index="3">Box3</a> >
<a href="#box4" class="disabled" data-index="4">Box4</a> >
<a href="#box5" class="disabled" data-index="5">Box5</a>
</div>
<div class="container">
<div id="box1" class="boxes" data-index="1">BOX 1</div>
<div id="box2" class="boxes hide" data-index="2">BOX 2</div>
<div id="box3" class="boxes hide" data-index="3">BOX 3</div>
<div id="box4" class="boxes hide" data-index="4">BOX 4</div>
<div id="box5" class="boxes hide" data-index="5">BOX 5</div>
</div>
JS
function ShowBox(index) {
if ($('.boxes[data-index="' + index + '"]').length) { // If a next box exists
$('.boxes').addClass('hide'); // Hide all boxes
$('.boxes[data-index="' + index + '"]').removeClass('hide'); // Show the next box
$('.links a').addClass('disabled'); // Hide all links
$('.links a[data-index="' + index + '"]').next('a').removeClass('disabled'); // Show the current link
}
}
$('.links a, .boxes').click(function (e) {
if (!$(this).hasClass('disabled')) { // If we don't have a disabled class
if ($(this).hasClass('boxes')) { // If we're clicking the box
ShowBox(parseInt($(this).attr('data-index'))+1); // Use next index
} else { // Else (clicking link)
ShowBox($(this).attr('data-index')); // Use current index
}
}
});