JQuery使用davID名称的变量

时间:2010-12-28 07:49:44

标签: jquery variables

一个简单的问题,我无法理解,希望你们和女孩们可以提供帮助。

我有div(带有ID),点击后会打开一个新的div - 效果很好,我真正想要的是用预定义文本“填充”新div基于点击的div的ID。例如:

<div class="infobox" id="help_msg1">Click me</div>

我可能会说3(实际上更多但是......)这些div的

这会打开:

<div id="helpbox">text in here</div>

在我的.js页面上/上我已准备好doc等等:

var help_msg1 ='作为帮助信息的文字'; var help_msg2 ='文本是另一条帮助信息'; var help_msg3 ='文本是另一条帮助信息';

然后

$('.infobox').live('click',function() {
 $('#helpbox').remove();
 $('label').css({'font-weight': '400'});
 $(this).next('label').css({'font-weight': '900'});
 var offset = $(this).next().next().offset();
 var offsetby = $(this).next().next().width();
 var leftitby = offset.left+offsetby+10;

$('body')。append('text in here');  $('#helpbox')。css({'left':leftitby,'top':offset.top});  });

注意我在添加新#helpbox之前删除每个.next().next(),而var help_msg1标识所有可用的相应文本输入。

我需要的是如何在点击id="help_msg1"时将var help_msg2加入附加内容,或在id="help_msg2"点击时{{1}}等等。我试过了

3 个答案:

答案 0 :(得分:3)

一种方法是使用jQuery的data()工具将您的帮助消息与<div>元素相关联:

$(document).ready(function() {
    $("#help_msg1").data("help_msg", "text that is a help message");
    $("#help_msg2").data("help_msg", "text that is another help message");
    // etc...
});

之后您可以直接从点击的<div>元素中获取消息:

$(".infobox").live("click", function() {
    // ...
    $("body").append($(this).data("help_msg"));
});

答案 1 :(得分:1)

定义一个数组映射元素ID到消息。

var messages = new Array;
messages['help_msg1'] = 'text that is a help message';

等...

然后,修改您的点击处理程序以包含此处理以决定要追加的文本:

var id = $(this)[0].id;
if(typeof(messages[id]) != 'undefined'){
     $('body').append(messages[id]);
}else{
     alert('no message for id '+id);
}

答案 2 :(得分:0)

我会尝试像

这样的东西
$('.infobox').live('click',function(event) {
    var text = eval(event.target.id);
    ...
}