2010-08-31 37 views
2

是否有可能停止与复选框(开/关)的jQuery功能?那里有任何例子吗?是否有可能通过复选框停止jQuery函数(开/关)?

+0

我不知道我是否理解正确,但是这里有: 使用全局变量,如果它设置为1,做些事情,否则什么也不做。 在函数的作用域中,你检查变量的值,并根据这个做一些事情。 – 2010-08-31 20:08:06

+0

好的......但我使用jquery的unbide,stop或其他东西吗? – Erik 2010-08-31 20:11:23

+0

我认为这取决于你试图阻止的功能。如果它是您自己的自定义函数,您可以将全局值的检查添加到函数的操作中。就像用if(shouldrun){}来包围动作,然后在复选框中点击shouldrun的值为1或者0 – Michael 2010-08-31 20:23:23

回答

0

试试这个:

http://jsfiddle.net/nNREP/1/

没有什么神奇的这个...你只需在测试脚本,如果你的复选框被选中。如果您还想取消终止点击链接(链接的点击事件)或表单提交(表单提交事件)时的链接,则只需针对以下特定事件返回false:

$('#myForm').submit(function(e) { 
    if (!$('#mycheck').is(":checked")) { 
     return false; 
    } else { 
     //do something...or nothing...whatever... 
    } 
}); 

编辑:您的提示插件似乎没有选项来有条件地终止脚本。您可以通过执行以下两种操作之一来解决这个问题:在插件中添加一些条件行或者在取消选中复选框时自动禁用该插件(这可能会占用相对较多的CPU资源)。所以,让我们关注的第一个选项...

当您设置tiptip插件,放在这样的事情:

$(".someClass").tipTip({maxWidth: "auto", edgeOffset: 10, enter: myFunction}); 

这myFunction的将在“active_tiptip”的一开始叫,在任何事情发生之前。转到插件源代码的第101行,你可以看到它是如何被调用的。我通过在文档中搜索单词“enter”发现了这一点......我发现了两个实例...其中一个属性最初是通过第35行的空函数创建的,另一个位于active_tiptip()函数的开头。现在,如果你想成为能够使用myFunction的要么取消或不取消这个脚本在tiptip.js执行,变线101:

opts.enter.call(this); 

要这样:

if (!opts.enter.call(this)) { 
    return false; 
} 

然后创建你的myFunction的,这是否:

function myFunction() { 
    return $('#mycheck').is(":checked"); 
} 

所以检查和假时没有时,myFunction的将返回true。如果为false,则会暂停active_tiptip()函数的执行,从而确保您的工具提示不会弹出。

这就像我愿意为此一样深。其余的你可以自己弄清楚。

+0

你的逻辑有效,但你还没有回答我的问题的症结所在。一个功能可以被驯服/停止。我所指的功能是一个jQuery提示弹出窗口,我想用一个复选框禁用它。 – Erik 2010-08-31 20:33:02

+0

你的问题的“关键”从来没有明确说过,所以我不知道我们如何期望知道你的意思。如果你想得到这个答案,我们需要知道你的其他代码是什么样的。这个插件是干什么的?什么时候被叫?我基本上没有什么信息可以继续。 – treeface 2010-08-31 20:38:35

+0

非常抱歉.. jquery插件是:http://code.drewwilson.com/entry/tiptip-jquery-plugin – Erik 2010-08-31 20:40:17

0

事情是这样:

function something() { 
    if ($("my.checkbox:checked").size() > 0) { 
      // do something 
    }else{ 
      // do nothing 
    } 
} 

沿着这些线路的东西反正。

+0

真棒,但是要调用一个STOP或终止一个函数,我在用什么? – Erik 2010-08-31 20:17:18

+0

在执行过程中,您无法真正停止外部功能。至少我从来没有听说过JavaScript中存在的中断... – 2010-08-31 21:01:45

相关问题