首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在调用类的基类时更改onclick函数

在调用类的基类时更改onclick函数
EN

Stack Overflow用户
提问于 2020-05-07 06:46:41
回答 2查看 129关注 0票数 0

我有6个按钮。前3属于f-click类,所有按钮都属于s-click.首先,我想通过调用f-click来运行functionOne .然后,应该禁用快速调用,再次单击f-单击,并希望被调用,onclick,ussing,s单击类。我的条件是下面的例子,如果按钮是1 2 3 4 5 6.

  1. 我想得到“你在.”的留言单击1,2或3.
  2. 4,5,6不应被调用,直到消息为"your in.“
  3. if消息"your in.”我希望被调用按钮值,像“您的clik on”+button_value。(1到6)
  4. 不应该是“您的in.”消息2次.

如何做到这一点,我的代码如下,

代码语言:javascript
复制
<button type="button" id="b_1" value="0" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_2" value="1" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_3" value="2" class="f-click s-click btn" name="button"></button>
<button type="button" id="b_4" value="3" class="s-click btn" name="button"></button>
<button type="button" id="b_5" value="4" class="s-click btn" name="button"></button>
<button type="button" id="b_6" value="5" class="s-click btn" name="button"></button>

这是我的jquery代码

代码语言:javascript
复制
$(".f-click").on('click', function() {
 firstFunction()
 secondFunction();
});

function firstFunction() {
 $(".f-click").prop("disabled", true);
 console.log("Your In");
 }

function secondFunction() {
 $(".s-click").prop("disabled", false);
 var selected_button = $(this).val();

 $(".s-click").on('click', function() {
 console.log("Your click on : "+selected_button);
 });
}

但是它不起作用,因为第二个函数和第一个函数一起工作,我想做什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-07 07:10:41

这里很少有问题:

  1. on firstFunction()您正在调用$(".f-click").prop("disabled", true);,但在secondFunction()中再次调用$(".s-click").prop("disabled", false);,并且由于所有6个按钮都有该类,因此.f-click按钮从未禁用。
  2. 可以通过在.s-click上不包含.f-click按钮来修复此问题,例如:

$(“.s-单击:not(.f-click)”).prop(“禁用”,secondFunction()中的secondFunction())--您多次将click事件处理程序分配给.s-click按钮。因此,在第一次单击时,它显示了一个控制台日志,然后显示了2个等等。要解决这个问题,您应该将.s-click按钮的.s-click事件处理程序放在secondFunction()之外,只需触发单击如下:

$(".s-click").click();

代码语言:javascript
复制
$(document).on('click', '.f-click', function() {
  firstFunction(this)
});

$(document).on('click', '.s-click:not(.f-click)', function() {
  secondFunction();
});

function firstFunction(obj) {
  $(obj).removeClass('f-click')
  console.log("this is 1st function");
}

function secondFunction() {
  console.log("this is 2nd function");
}
代码语言:javascript
复制
.btn { padding: 4px 15px;  margin: 4px;}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" id="b_1" value="0" class="f-click s-click btn" name="button">1</button>
<button type="button" id="b_2" value="1" class="f-click s-click btn" name="button">2</button>
<button type="button" id="b_3" value="2" class="f-click s-click btn" name="button">3</button>
<button type="button" id="b_4" value="3" class="s-click btn" name="button">4</button>
<button type="button" id="b_5" value="4" class="s-click btn" name="button">5</button>
<button type="button" id="b_6" value="5" class="s-click btn" name="button">6</button>

票数 2
EN

Stack Overflow用户

发布于 2020-05-07 07:07:46

移动这个:

代码语言:javascript
复制
$(".s-click").on('click', function() {
 console.log("this is 2nd function");
 });

外边

代码语言:javascript
复制
function secondFunction() {

然后对每个单击事件处理程序在.off()之前调用.on

代码语言:javascript
复制
$(".f-click").off().on('click', function

..。对于其他单击处理程序也是如此。

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

https://stackoverflow.com/questions/61651503

复制
相关文章

相似问题

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