Jquery/javascript函数问题
我有一个javascript函数做一些动画,它的参数是一个父选择器Jquery/javascript函数问题,javascript,jquery,function,parameters,jquery-selectors,Javascript,Jquery,Function,Parameters,Jquery Selectors,我有一个javascript函数做一些动画,它的参数是一个父选择器 function myFunction(a) { $("'"+a+">#one'").stop(true, true).animate({left:'30px'},1100); $("'"+a+">#two'").stop(true, true).animate({left:'30px'},1100); } 下面一行调用该函数 $("#main").mouseleave(myFunction("#main"));
function myFunction(a)
{
$("'"+a+">#one'").stop(true, true).animate({left:'30px'},1100);
$("'"+a+">#two'").stop(true, true).animate({left:'30px'},1100);
}
下面一行调用该函数
$("#main").mouseleave(myFunction("#main"));
但这不起作用,有人能告诉我代码中有什么错误吗?选择器连接不正确。jquery函数接受一个字符串作为选择器参数,不需要用单引号将其括起来
function myFunction(a)
{
$(a+">#one").stop(true, true).animate({left:'30px'},1100);
$(a+">#two").stop(true, true).animate({left:'30px'},1100);
}
选择器连接不正确。jquery函数接受一个字符串作为选择器参数,不需要用单引号将其括起来
function myFunction(a)
{
$(a+">#one").stop(true, true).animate({left:'30px'},1100);
$(a+">#two").stop(true, true).animate({left:'30px'},1100);
}
试试这个-
$(a+" > #one").stop(true, true).animate({left:'30px'},1100);
$(a+" > #two").stop(true, true).animate({left:'30px'},1100);
试试这个-
$(a+" > #one").stop(true, true).animate({left:'30px'},1100);
$(a+" > #two").stop(true, true).animate({left:'30px'},1100);
该函数将函数作为参数。您正在传递一个已执行的函数(带有参数的函数),因此函数的结果将作为参数传递给mouseLeave
(而不是函数本身)
您需要将它包装为另一个函数,该函数将在新的匿名函数中调用您的myFunction
函数
$("#main").mouseleave(myFunction("#main"));
假设myFunction
片段是正确的,那么您需要如下内容:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
该函数将函数作为参数。您正在传递一个已执行的函数(带有参数的函数),因此函数的结果将作为参数传递给mouseLeave
(而不是函数本身)
您需要将它包装为另一个函数,该函数将在新的匿名函数中调用您的myFunction
函数
$("#main").mouseleave(myFunction("#main"));
假设myFunction
片段是正确的,那么您需要如下内容:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
这里有几个问题: 1.选择器 只要在你的头脑中进行字符串替换。如果要将
#main
传递到函数中,则选择器的结果如下所示:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
请注意其中的”
字符。现在,如果删除”
字符,您将得到:
$("#main>#one")...
…这意味着“id为的元素”一个,它是id为的元素的子元素。现在可以工作了,但它表明您对多个元素使用了相同的id(“一个”
)。您不能在HTML中这样做
您的id=“one”
和id=“two”
元素应该具有class=“one”
和class=“two”
,如果是这样,您的代码应该如下所示:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
2.功能
在您的代码调用myFunction
:
$("#main").mouseleave(myFunction("#main")); // <== Wrong
从您当前的任务中退一步,学习一些基本的jQuery(和JavaScript)教程,以巩固您对其中一些概念的理解,例如id
s是唯一的、将函数作为事件处理程序传递、字符串连接等。这里有几个问题:
1.选择器
只需在头脑中进行字符串替换。如果要将#main
传递到函数中,则选择器的最终外观如下所示:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
请注意其中的”
字符。现在,如果删除”
字符,您将得到:
$("#main>#one")...
…这意味着“id为的元素”一个,它是id为的元素的子元素。现在可以了,但它表明您对多个元素使用了相同的id
(“一个”
)。你不能在HTML中这样做
您的id=“one”
和id=“two”
元素应该具有class=“one”
和class=“two”
,如果是这样,您的代码应该如下所示:
$("#main").mouseleave(new function() {
myFunction("#main");
});
$("'#main>#one'")...
function myFunction(a)
{
$(a+">.one").stop(true, true).animate({left:'30px'},1100);
$(a+">.two").stop(true, true).animate({left:'30px'},1100);
}
2.功能
在您的代码调用myFunction
:
$("#main").mouseleave(myFunction("#main")); // <== Wrong
从当前任务中退一步,学习一些基本的jQuery(和JavaScript)教程,巩固您对其中一些概念的理解,例如id
s是唯一的、将函数作为事件处理程序传递、字符串连接等,可能是值得的
函数myFunction(a){
$(a+“>#one”).stop().animate({left:30},1100);//
函数myFunction(a){
$(a+“>#one”).stop().animate({left:30},1100);//嗯,代码中有两个地方出错:
- 您的选择器将变为“
”'#main>#one'
。这不会选择任何内容。您可能希望省略撇号:
$(a+" > #one")…
但由于ID在文档中是唯一的,因此您不需要#main
前缀。只需直接使用ID即可:
$("#one, #two").stop(true, true).animate({left:'30px'},1100);
- 您正在(并将其结果,
undefined
传递给mouseleave
方法),而不是将其作为事件处理程序添加
$("#main").mouseleave(function(e) {
myFunction("#main");
});
好吧,您的代码中有两个错误:
- 您的选择器将变为“
”'#main>#one'
。这不会选择任何内容。您可能希望省略撇号:
$(a+" > #one")…
但由于ID在文档中是唯一的,因此您不需要#main
前缀。只需直接使用ID即可:
$("#one, #two").stop(true, true).animate({left:'30px'},1100);
- 您正在(并将其结果,
undefined
传递给mouseleave
方法),而不是将其作为事件处理程序添加
$("#main").mouseleave(function(e) {
myFunction("#main");
});
好吧,它做什么?它什么都不做?出错?使你的计算机崩溃?使飞行的猴子从天而降?给你免费的华夫饼?请澄清。好吧,它做什么?它什么都不做?出错?使你的计算机崩溃?使飞行的猴子从天而降?给你免费的华夫饼?请澄清。