按钮不断只发一次

时间:2017-01-25 05:45:33

标签: javascript jquery

如果继续点击相同的按钮,则只触发一次。示例:https://jsfiddle.net/h4wgxofh/,例如,如果if(isset($_POST['removeD'])){ }else{ }点击,则第二次或更多次点击应停止点击,与click1相同但是,如果我点击相同的按钮,它总是会触发。此外,我希望链接只触发一次,但如果点击其他按钮,则可用。 (考虑是否有更多按钮)谢谢

HTML

click2

脚本

<div class="wrap">
  <a href="#">Click1</a>
  <a href="#">Click2</a>
</div>

9 个答案:

答案 0 :(得分:1)

请参阅以下代码

var clicked1 = false;
var clicked2 = false;

$('.wrap').on('click', 'a', function(){
	var $this = $(this);
  	var clickOrigin = $(this).text();
	
  	if(clickOrigin == 'Click1' && clicked1==false){
    	   console.log("Click 1 clicked");
    	   clicked1 = true;
	}
	if(clickOrigin == 'Click2' && clicked2==false){
    	   console.log("Click 2 clicked");
    	   clicked2 = true;
	}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
  <a href="#">Click1</a>
  <a href="#">Click2</a>
</div>

您也可以找到jsFiddle

答案 1 :(得分:1)

要在首次单击后禁用这两个按钮,请尝试:

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;
    };
  });
});

答案 2 :(得分:1)

你需要区分两个链接(我在这里使用的文字,你可以放任何方案)看到这个例子它可能会有所帮助: -

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;
    }
  }
});

完整Demo

答案 3 :(得分:1)

我可能在这里遗漏了一些东西,但为什么不把这个事件绑定到.wrap中的每个链接上并在点击时取消绑定它:

$('.wrap a').on('click', function(){    
    console.log($(this).text());
    $(this).unbind('click');
});

请参阅此fiddle

编辑:在您评论希望一个链接在克服另一个链接之后被反弹之后,即使它可能不是最干净的解决方案,这也可以完成这项工作:

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);

Fiddle again

答案 4 :(得分:0)

每当有人点击其中一个按钮时,您的脚本设置点击从falsetrue,检查值是true,然后将其设置为false再次。如果您只想触发一次按钮,则需要将其格式化(显然,您必须为具有不同ID的每个按钮专门复制此按钮):

var clicked = false;

$('.wrap').on('click', 'a', function(){
  var $this = $(this);

  if(clicked == false){
    console.log($this.text());
    clicked = true;
  }
});

答案 5 :(得分:0)

尝试这个,更简单,如果您有多个点击按钮

,这将更有用

如果您已经实施了其他方式,这将值得一试

     <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")
        }
    });

Fiddle

答案 6 :(得分:0)

在第一次单击禁用锚标记时,只需点击禁用锚标记就可以提供相同的功能,只需在下面的代码段中找到相同的内容,使用此功能,我们可以减少点击功能的往返次数

$('.wrap').on('click', 'a', function(){
 $(this).addClass("disableClick");
});
.disableClick{
    pointer-events: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
  <a href="#">Click1</a>
  <a href="#">Click2</a>
</div>

答案 7 :(得分:0)

I think you can disable anchor link after one click like this

  <div class="wrap">

  <a href="#" id="click1">Click1</a>

  <a href="#" id="click2">Click2</a>
</div>

我认为你可以像这样一次点击后禁用锚链接

  <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(); 
    });
});

我认为它会帮助你。

答案 8 :(得分:-3)

只需使用$(".wrap").one('click', ....

阅读jquery API文档。