首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有if one条件的jQuery "one“方法

带有if one条件的jQuery "one“方法
EN

Stack Overflow用户
提问于 2016-09-12 12:28:35
回答 2查看 1.2K关注 0票数 0

我很难用if和else条件来实现jQuery的".one“方法。无论条件是真还是假,我只需要执行这个单击函数一次。

请检查下面的代码以简化我的问题。

代码语言:javascript
运行
复制
$("span").one("click", function () {
	var ind = $("span").index($(this));
  
	if (ind == 0) {
  	alert ("clicked 1st element");
  }
  
  else {
    alert ("clicked 2nd element");
  }
})
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>1st click element</span><br>
<span>2nd click element</span>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-12 12:38:40

在您的例子中,您有两个span标记。因此,您为这两种情况都附加了事件one

这句话:

代码语言:javascript
运行
复制
$("span").one("click", function () {

与以下两行“等效”:

代码语言:javascript
运行
复制
$("span:eq(0)").one("click", function () {
$("span:eq(1)").one("click", function () {

这就是原因,因为你收到了两个事件。

如果要停止第二个事件而只获取第一个事件,则可以考虑删除事件处理程序:

代码语言:javascript
运行
复制
$("span").one("click", function () {
  
  // remove the event for the second span...
  $("span").off("click");
  
  
  var ind = $("span").index($(this));

  if (ind == 0) {
    alert ("clicked 1st element");
  }

  else {
    alert ("clicked 2nd element");
  }
})
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


<span>1st click element</span><br>
<span>2nd click element</span>

票数 1
EN

Stack Overflow用户

发布于 2016-09-12 12:38:26

代码语言:javascript
运行
复制
$("span").one("click", function () {
	var ind = $("span").index($(this)); 
  
  var getRes = (ind == 0) ? alert ("clicked 1st element") : alert ("clicked 2nd element");
  
})
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>1st click element</span><br>
<span>2nd click element</span>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39450348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档