我有一个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>
但我不明白我怎样才能得到并解析它? 感谢
答案 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);
});
答案 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>