通过链接将参数传递给jQuery函数

时间:2012-03-21 03:29:02

标签: javascript jquery

我有一个jQuery函数:

$(function(){ 
function InitDialog(c,b){
    /* some code */     
}

$('a[name=dialog]').click(function(e)                                                 {         
            InitDialog(caption, bodyText);        
    fadeInCommon(e,this);
});
});

我也有一个在html代码中定义的链接,如下所示:

<ul>
<li><a href="#dialog" name="someInformation" }">something</a></li>
</ul>

我的问题是如何通过链接将参数(caption,bodyText)传递给Init()函数? 我听说过如下方法:

<li><a href="#dialog" name="someInformation" onClick="return {height: 100, width:200};"}">something</a></li> 

但我不明白我怎样才能得到并解析它? 感谢

3 个答案:

答案 0 :(得分:6)

由于您使用的是jquery,我建议您执行以下操作来在元素上存储数据

<a href="#dialog" name="some_name" data-params="{'param1':'someValue', 'param2':'someOtherValue'}">Link Text</a>

然后在您的点击功能中,您可以访问它,如下所示

$('a#dialog').click(function(){
    var me = $(this), data = me.data('params');
    //console.log(data);
});

编辑 - 小提琴添加

Check the fiddle to see a working sample

答案 1 :(得分:2)

使用data- *属性,您可以:

<a name='dialog'
 data-caption='this is the caption'
 data-bodytext='this is the body'>klik</a>

和javascript:

$(function() {
    function InitDialog(c, b){
        alert('the caption: ' + c);
        alert('the body: ' + b);
        }

    $('a[name=dialog]').click(function(e) {
        caption = $(this).data('caption'); // gets data-caption attribute value
        bodyText = $(this).data('bodytext'); // gets the data-bodytext attribute value
        InitDialog(caption, bodyText);
        fadeInCommon(e,this);
        });
    });

而不是使用name作为选择器,我建议改为class

答案 2 :(得分:1)

首先,我想你想说$('a[href="#dialog"]')来获取a标签,然后在click函数中,$(this).attr("name")会给你一些信息,你可以存储一个json字符串。

<a href="#dialog" name="{caption:'XXXX', bodyText:'XXXX'}">My Text</a>

$('a[href="#dialog"]').click(function() {
     var data = JSON.parse($(this).attr("name"));
     InitDialog(data.caption, data.bodyText);
});

但是,我不认为这是你正在尝试做什么的正确方法,你会更好地在页面下方的div中创建对话框,隐藏它,并且只在你显示时显示它点击链接?因为术语'bodyText'意味着它会变得很大......

或者只是:

 <a href="javascript:InitDialog('Caption', 'BodyText'); fadeInCommon(e,this);">My Link</a>