2010-11-03 65 views
3

我是jQuery的新手,但我希望有人能够帮助我。我已经搜索了这个论坛(和其他人),但一直未能找到我可以开展工作的答案。发送变量到JQuery函数

我有这样一个链接:

<a href="#"> 

和jQuery脚本:

$("div.show_dialogbox").click(function(){ 
    $("div#dialogboxwraper").animate({ 
     height: "400px" 
    }, "slow") 
    .animate({ 
     height: "200px" 
    }, "slow"); 
}); 

我希望能够发送一个变量的联系,并用它在脚本这样的高度:

<a href="#" OnClick="variable(200)"> 


$("div.show_dialogbox").click(function(variable){ 
    $("div#dialogboxwraper").animate({ 
     height: variable+200+"px" 
    }, "slow") 
    .animate({ 
     height: variable+"px" 
    }, "slow"); 
}); 
+0

请更正您的语法。 – 2010-11-03 19:01:38

+0

Soory ...我的诵读困难和英语不是我的母语 – 2010-11-03 19:46:40

回答

2

不确定发送变量的明确性,但您可以设置锚是“200像素”,然后你的函数里面做这样的事情

var h = $(this).attr('title'); 
+0

谢谢..可能是有用的...但我会优先使用标题作为链接的标题 – 2010-11-03 19:37:50

7

我会使用数据属性在这里,为此,在jQuery的1.4.3中加入更多的支持,这样的:

<a href="#" class="show_dialogbox" data-height="200"> 

然后在jQuery的:

$("a.show_dialogbox").click(function(){ 
    $("#dialogboxwraper").animate({ 
    height: $(this).data('height') + 200 
    }, "slow") 
    .animate({ 
    height: $(this).data('height') 
    }, "slow"); 
}); 

You can test it out here

+0

这看起来不错,容易....但我没有验证w3c :-( – 2010-11-03 19:36:02

+0

@Jesper - 它在HTML5中有效,同时也不会导致HTML4出现问题。 – 2010-11-03 19:40:22

+0

呃...网站是使用XHTML(严格):(...并且必须验证 – 2010-11-03 19:44:29

0

你也可以使用一个插件来动画到某个类,这样你可以将你的网站的显示部分与你网站的数据部分分开。您将为“打开”状态创建一个CSS类,为另一个“关闭”状态创建一个CSS类,然后使用以下插件之一在它们之间进行动画制作。

http://plugins.jquery.com/project/animate-to-class

的jQuery UI,还扩展了动画类,所以你可以这样做:

http://jqueryui.com/demos/switchClass/

这里有一个演示,这用了jQuery UI:

http://jsbin.com/ijewu3

编辑链接:

http://jsbin.com/ijewu3/edit

+0

我不舒服,我明白你的意思...我想使用多个内容的脚本...当打开时,这个框会加载它的内容...所以我对同一个盒子有多个高度 – 2010-11-03 19:41:04

+0

你会为每种类型的内容创建一个类,然后取决于在用户加载的内容类型上,您可以切换类以正确显示该内容。我会尽量给你一点例子。 – Sandro 2010-11-03 20:28:24

+0

Tahnk你......我很期待看到那个 – 2010-11-03 20:56:44

1

做得比功能好;

<a href="#" OnClick="shoot(200)"> 

///

function shoot (number) { 

    $("div#dialogboxwraper").animate({ 
     height: number+200+"px" 
    }, "slow") 
    .animate({ 
     height: number+"px" 
    }, "slow"); 


} 

注意:您将必须在每一个流程,要做到这

+0

我没有看到这个,写了基本相同的代码,不得不删除。我认为这是最好的主意。 :) – 2010-11-03 20:55:09

0

最简单的方式将移动实际启动动画的代码添加onclick="shoot(200);"到一个单独的功能,像这样:

function doSomeAwesomeAnimation(variable){ 
    $("div#dialogboxwraper").animate({ 
     height: variable+200+"px" 
    }, "slow") 
    .animate({ 
     height: variable+"px" 
    }, "slow"); 
} 

那么你会wireup点击事件你的链接像这样的:

$("div.show_dialogbox").bind("click", doSomeAwesomeAnimation(200)); 

编辑:一个快速点你,你正在使用,以wireup点击事件选择的目标是一个div类show_dialogbox不是可能包含链接的HTML元素。只是想确保你知道这一点。

+0

是的谢谢..我已经移动了该选择器:-) ...并感谢输入 – 2010-11-04 00:03:03

0

html标签可以有rev =“”和rel =“”可以解析的字符串。你也可以看看这样的东西:`...

这将设置一个标签参数,然后继续点击后应该发生的任何事情。

0

谢谢大家的帮助和输入/ ideers :-)

我结束了使用vertazzar答案,因为我发现它是一个suting我需要最好的(和beeing容易

这就是我结束了

链接:

<a href="#" OnClick="showdialogbox(350,'test1');" class="show_dialogbox">Dialog test 1</a><br /><a href="#" OnClick="showdialogbox(200,'test2');" class="show_dialogbox">Dialog test 2</a> 

和功能

// SHOW DIALOG BOX 
function showdialogbox (boxh, boxc) { 
    if ($("div#dialogboxwrap").css("height") === "0px") { 
      $("#dialogboxcontent").load("test1.html #"+boxc); 
    } 
    else { 
     $("div#dialogboxwrap").animate({ 
      height: "0px" 
      }, "slow",function(){ 
      $("#dialogboxcontent").load("test1.html #"+boxc); 
     }); 
    } 
    $('div#dialogboxcontent').css('height', boxh-80+"px"); 
    $("div#dialogboxwrap").animate({ 
     height: boxh+100+"px" 
    }, "slow") 
    .animate({ 
     height: boxh+"px" 
    }, "slow"); 
} 
// CLOSE DIALOG BOX 
$(document).ready(function() { 
    $("div#close_dialogbox").click(function(){ 
     $("div#dialogboxwrap").animate({ 
      height: "0px" 
     }, "slow"); 
    }); 

结果可以蜜蜂在这里看到(注释velkome)http://www.gynther-klanen.dk/hr/

现在如何关闭这个问题,我可以在这里somhow信用吗???