启动第二个.click函数
firing the second .click function
我认为这是一个非常新手的问题,但有可能在第一次和第二次点击时在一个.点击上有两个单独的功能吗?
$(div).click(function(){
alert("1st click");
},
function(){
alert("2nd click");
});
http://jsfiddle.net/2xe8a/
或者是否有任何建议将该职能分开?
谢谢大家!
当然,只需在第一次点击时设置一些内容,并在第二次时检查
$('div').click(function(){
var clicked = $(this).data('clicked');
if ( clicked ) {
alert('the rest of the time');
}else{
alert('first time');
}
$(this).data('clicked', !clicked);
});
FIDDLE
一种方法是在第一次点击时解除绑定:
function click1 () {
alert('1st click');
$(this).off('click', click1).on('click', click2);
}
function click2 () {
alert('2nd click');
}
$(function () {
$('#click').on('click', click1);
});
更新的JSFiddle:http://jsfiddle.net/2xe8a/1/
另一种选择是使用包装器方法来确定应该激发哪种方法:
function click1 () {
alert('1st click');
}
function click2 () {
alert('2nd click');
}
$(function () {
$('#click').data('clicks', 0).on('click', function () {
var $this = $(this),
clicks = $this.data('clicks') + 1;
switch (clicks) {
case 1: click1.call(this); break;
case 2: click2.call(this); break;
}
$this.data('clicks', clicks);
});
});
更新的JSFiddle:http://jsfiddle.net/2xe8a/6/
编辑:根据Juhana的建议,第三个选项可能看起来像这样:
function click2 () {
alert('2nd click');
}
$(function () {
$('#click').one('click', function () {
alert('1st click');
$(this).one('click', click2);
});
});
JSFiddle链接:http://jsfiddle.net/2xe8a/8/
如果每个函数只发生一次,可以使用one
而不是on
(而且,我总是使用类似on('click')
的东西而不是快捷方式click()
方法(:
$("#click").one('click', function(){
alert("1st click");
$("#click").one('click', function(){
alert("2nd click");
});
});
如果您需要更多地控制哪一个触发,可以使用on
,然后使用off
来解除事件处理程序的绑定:
$("#click").on('click', function(){
alert("1st click");
$("#click").off('click');
$("#click").on('click', function(){
alert("2nd click");
$("#click").off('click');
});
});
如果你想用变量来做,你可以做:
var firstClick = true;
$("#click").on('click', function(){
if (firstClick) {
alert("1st click");
firstClick = false;
}
else {
alert("2nd click");
}
});
我不确定你到底想做什么。
如果你试图让第二个函数每点击2次(即偶数次点击(执行一次,并在奇数次点击时执行第一个函数,那么为什么不使用计数器呢?
这是一个非常简单的例子,但我认为它说明了原理:
var count = 0;
$("#click").click(function(){
if (count % 2 === 0) {
oddNumberOfClicks();
}
else {
evenNumberOfClicks();
}
count++;
});
function oddNumberOfClicks() {
alert('Doing some work for odd');
}
function evenNumberOfClicks() {
alert('Doing some work for even');
}
http://jsfiddle.net/2xe8a/4/
使用递增变量?
clicks = 0;
$(div).click(function(){
clicks = clicks +1; // clicks++
if ( clicks == 1 ) {
alert("1st click");
} else if ( clicks == 2 ) {
alert("2nd click");
} else {
//...
}
});
(function(){
var count = 0;
$("#click").click(function(e){
if(count % 2 == 0){
count++;
alert(1);
// first click
}else{
count++;
alert(2);
// second click
}
});
});
使用count
er
FIDDLE
附言:没有jQuery就可以完成这件事。http://youmightnotneedjquery.com/
简单方法:
var t = false;
$("#click").click(
function(){
if(!t){
alert("1st click");
t = true;
} else {
alert("2st click");
}
}
);
Fiddle:
http://jsfiddle.net/2xe8a/9/
第二次点击是指双击吗?如果是这样的话,jQuery中有一个双击方法:
$(div).dblclick( function() {
alert("asdf");
});
- 将代码放入click函数时出现javascript问题
- 将参数中类似形式的ID传递给函数click()
- 如何在javascript中使用click函数选择数组元素
- 使用jqGrid列格式化程序函数使ng-click工作
- Javascript:函数bind.click&对于每个复选框
- ng-click指令没有调用整个函数
- .replaceWith 无法使用 .click 函数加载另一个值
- Jquery:输入类型=“”;按钮“;使用.click()函数在Internet Explorer和Safari中不起作
- jQuery-click函数不适用于使用innerHTML动态生成的按钮
- 在 Angular 指令中定义一个用于 ng-click 的函数
- .click 函数仅适用于断点
- jQuery 'this' 跟随一个 .find click 函数
- 是否可以在 ng-click 中调用函数字符串
- 如何在 ng-click 函数中更改$rootScope值
- 在引导模式中使用“ng click”触发函数
- 使用带有click()javascript的函数
- Angularjs指令链接调用ng-click中的函数
- 尽管使用了off,click函数仍会触发,这可能也会导致数组问题
- 如何从这个.hover函数.click函数
- 如何在jQuery触发器上运行回调函数("click")