Javascript 按钮只持续开火一次
如果继续单击相同的按钮,则只触发一次。示例:,例如,如果单击了Javascript 按钮只持续开火一次,javascript,jquery,Javascript,Jquery,如果继续单击相同的按钮,则只触发一次。示例:,例如,如果单击了click1,则第二次或更多次单击应停止激发,与click2相同,但是,如果我单击相同的按钮,它总是激发。此外,我想链接只触发一次,但成为可用的,如果其他按钮被点击。(考虑是否有更多按钮)谢谢 HTML 只需使用$(“.wrap”)。一('click', 阅读jquery API文档。每次有人单击其中一个按钮时,您的脚本都会将单击从false设置为true,检查该值是否为true,然后再次将其设置为false。如果只希望按钮触发一次,
click1
,则第二次或更多次单击应停止激发,与click2
相同,但是,如果我单击相同的按钮,它总是激发。此外,我想链接只触发一次,但成为可用的,如果其他按钮被点击。(考虑是否有更多按钮)谢谢
HTML
只需使用$(“.wrap”)。一('click',
阅读jquery API文档。每次有人单击其中一个按钮时,您的脚本都会将单击从
false
设置为true
,检查该值是否为true
,然后再次将其设置为false
。如果只希望按钮触发一次,则需要将其格式化为这样(显然,您必须为每个具有不同ID的按钮专门复制此项):
请参阅下面的代码
var clicked1=false;
var clicked2=假;
$('.wrap')。在('click','a',function()上{
var$this=$(this);
var clickOrigin=$(this.text();
如果(clickOrigin='Click1'&&clicked1==false){
console.log(“单击1”);
clicked1=true;
}
如果(clickOrigin='Click2'&&clicked2==false){
console.log(“单击2”);
clicked2=true;
}
});
要在第一次单击后禁用这两个按钮,请尝试:
var clicked = false;
$('.wrap').on('click', 'a', function(){
let $this = $(this);
if( !clicked ){
console.log($this.text());
clicked = true;
};
});
$('.wrap a').each(function() {
let $this = $(this);
$this.disabled = false;
$this.on('click', function() {
if ( !$this.disabled ) {
console.log($this.text());
$this.disabled = true;
};
});
});
要在首次单击后禁用每个按钮,请尝试:
var clicked = false;
$('.wrap').on('click', 'a', function(){
let $this = $(this);
if( !clicked ){
console.log($this.text());
clicked = true;
};
});
$('.wrap a').each(function() {
let $this = $(this);
$this.disabled = false;
$this.on('click', function() {
if ( !$this.disabled ) {
console.log($this.text());
$this.disabled = true;
};
});
});
试试这个,简单得多,如果你有多个点击按钮,它会更有用 如果您已经实现了其他方法,那么这将值得一试
<div class="wrap">
<a href="#" data-value="">Click1</a>
<a href="#" data-value="">Click2</a>
</div>
$('.wrap').on('click', 'a', function(){
var $this = $(this);
if($this.attr("data-value") == ""){
console.log($this.text());
$this.attr("data-value","clicked")
}
else{
console.log("Already clicked")
}
});
$('.wrap')。在('click','a',function()上{
var$this=$(this);
if($this.attr(“数据值”)=“”){
log($this.text());
$this.attr(“数据值”,“单击”)
}
否则{
log(“已单击”)
}
});
您需要区分两个链接(我在这里使用了文本,您可以在任何情况下使用),请参见此示例,它可能会有所帮助:-
var clicked1 = 0;
var clicked2 = 0;
$('.wrap').on('click', 'a', function() {
var $this = $(this);
var $text = $(this).text();
//Click2
if ($text == 'Click1') {
clicked1 += 1;
if (clicked1 == 1) {
console.log($text);
} else {
return;
}
}
//Click2
if ($text == 'Click2') {
clicked2 += 1;
if (clicked2 == 1) {
console.log($text);
} else {
return;
}
}
});
完整的而不是将代码放在单击上,只需单击第一次单击即可禁用锚定标记这与您想要的服务相同只需在下面的代码段中查找更多信息使用此功能,我们还可以减少单击功能的往返次数
$('.wrap')。在('click','a',function()上{
$(此).addClass(“禁用单击”);
});
。禁用单击{
指针事件:无;
}
我想这会对您有所帮助。我可能在这里遗漏了一些东西,但为什么不将事件绑定到中的每个链接。按如下方式将其包装并解除绑定:
$('.wrap a').on('click', function(){
console.log($(this).text());
$(this).unbind('click');
});
看到这个了吗
编辑:在您评论希望一个链接在点击另一个链接后反弹后,即使这可能不是最干净的解决方案,这也可以完成以下工作:
var onclick = function(){
var $el = $(this);
console.log($el.text());
$('.wrap a').off('click', onclick);
$('.wrap a').each(function(id, link){
if($el.text() != $(link).text())
$(link).on('click', onclick);
});
}
$('.wrap a').on('click', onclick);
不要告诉人们阅读文档,也不要提供相关文档的链接。谢谢,但是一旦我单击
click1
,click2
没有启动,我是否必须检查每个a
?我是否需要使用$each
?那么你想允许每个链接单击一次,是吗?是的!@AtaurRahmanMunna,我应该使用$each
?当然你可以使用。非常感谢,如果可能的话,如果我点击1
,然后点击点击2
,点击1
可以被点击(激发)?如果我有3个或3个以上的按钮。这意味着链接只能触发一次,但如果点击其他按钮,链接就变为可用。要获得更多按钮,你应该使用$(每个)
功能。在我的示例中,如果要再次使链接可点击,请将相应的标志设置为false。例如,clicked1=false
是否有可能使链接只能触发一次,但在单击其他按钮时变为可用。考虑到是否有更多按钮。非常感谢您可以在其他按钮单击中将单击计数器重置为0为相关锚点启用再次单击(但可再次单击)。如果您需要随时单击它,请告诉我您的场景谢谢关闭更合适,但是在单击click1后,如何使click2自动可用?因此,它们不能被多次单击,但单击其他链接后单击确定这正是我想要的。非常感谢:)不知道onclick
可以在其内部
<div class="wrap">
<a href="#" id="click1">Click1</a>
<a href="#" id="click2">Click2</a>
</div>
$(function () {
$('#click1').on("click", function (e) {
$('#click1').on("click", function (e){
e.preventDefault();
e.preventDefault();
});
});
$('.wrap a').on('click', function(){
console.log($(this).text());
$(this).unbind('click');
});
var onclick = function(){
var $el = $(this);
console.log($el.text());
$('.wrap a').off('click', onclick);
$('.wrap a').each(function(id, link){
if($el.text() != $(link).text())
$(link).on('click', onclick);
});
}
$('.wrap a').on('click', onclick);