JQuery использует переменную по имени divID - PullRequest
3 голосов
/ 28 декабря 2010

Просто быстрый вопрос, который я не могу понять, надеюсь, что вы, ребята, можете помочь.

У меня есть div (с идентификатором), который при нажатии открывает новый div - отличные работыхорошо, что я действительно хочу, это "заполнить" новый div предопределенным текстом на основе идентификатора кликаемого элемента.пример:

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

Я могу сказать 3 (на самом деле больше, но ...) этих div'ов

Это открывает:

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

In / on my .js страница У меня есть готовый документ и т. Д. Затем:

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 ('текст здесь');$ ('# helpbox'). css ({'left': leftitby, 'top': offset.top});});

Примечание. Я удаляю каждый #helpbox перед добавлением нового, а .next().next() идентифицирует соответствующий текстовый ввод, в котором все работает.

Что мне нужно, так это как поставитьvar help_msg1 в добавление при нажатии id="help_msg1" или var help_msg2 при нажатии id="help_msg2" и т. Д. Я попытался

Ответы [ 3 ]

3 голосов
/ 28 декабря 2010

Один из способов заключается в том, чтобы связать ваши справочные сообщения с самими элементами <div>, используя data () объекта jQuery:

$(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 голос
/ 28 декабря 2010

Определение идентификаторов элементов сопоставления массива сообщениям.

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);
}
0 голосов
/ 28 декабря 2010

Я бы попробовал что-то вроде

$('.infobox').live('click',function(event) {
    var text = eval(event.target.id);
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...