2012-02-22 86 views
-2

我想做一个动态函数,但我遇到了麻烦,因为我似乎无法在JS函数中运行我的JQuery代码。我有一个工作示例here如何在JavaScript函数中运行JQuery

我有第二个例子here。两者之间的jsfiddle的,唯一的区别是,我切换通话功能从:

$('#btnAdd').click(function() { 

这个调用函数:

function addBtn(){ 

,并在delBtn相同。我想这样做的原因是我可以传递一个参数,所以我知道如果我想添加另一个问题字段或答案字段。

+2

什么问题? – gdoron 2012-02-22 21:26:54

+0

如何在JavaScript函数中运行JQuery – user1082764 2012-02-22 21:29:56

+0

这就像每个javascript代码一样...... jQuery是Javascript上的抽象,而不是某种魔术。 – gdoron 2012-02-22 21:31:08

回答

3

jsFiddle在默认情况下将JavaScript代码封装在闭包中(即函数是私有变量)。你必须选择“无包裹(身体)”:http://jsfiddle.net/UpEvK/2/

+0

o,我没有意识到这是一个jsFiddle问题。我很沮丧,因为我没有看到任何问题。非常感谢! – user1082764 2012-02-22 21:29:36

0

您提供的两个代码片段在功能上是不同的。

这实际上是注册的单击事件:

$('#btnAdd').click(function) 

在这种情况下,“功能”仅仅是一个回调函数,当点击事件被触发,你想调用的函数的名称。因此,与你的第二个JS提琴工作,你就必须做到以下几点:

$('#btnAdd').click(addBtn); 

如果你可以给我们介绍一下你实际上是试图用代码做一些更多的信息,我们也许能够提供更详细的答案。

+0

啊,对不起,我错过了你在第二个JSFidle的html中添加了onclick属性,pimvdb的答案是正确的 – 2012-02-22 21:36:22

0

我会从代码中获取代码。您可以使用:

$('#btnAdd').click(function() { 
    addBtn(); 
}); 

,因为现在你有多个:把一类= 'btnAdd' 的标记不onclick句柄和使用:

$('.btnAdd').live('click',function() { 
    addBtn(); 
}); 

新的标记:

<input class="btnAdd" type="button" value="Add Question" /> 

编辑:现在支持两者的最终脚本:

$('.btnAdd,#btnAdd').live('click',function() { 
    addBtn(); 
}); 

注意1.7.1 jQuery用户;用途:

$(document).on('click','.btnAdd,#btnAdd',function() { 
    addBtn(); 
});