Jquery/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"));

我有一个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"));

但这不起作用,有人能告诉我代码中有什么错误吗?

选择器连接不正确。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");
    });
    

好吧,它做什么?它什么都不做?出错?使你的计算机崩溃?使飞行的猴子从天而降?给你免费的华夫饼?请澄清。好吧,它做什么?它什么都不做?出错?使你的计算机崩溃?使飞行的猴子从天而降?给你免费的华夫饼?请澄清。