一个简单的问题,我无法理解,希望你们和女孩们可以提供帮助。
我有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}}等等。我试过了
答案 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);
...
}