JQuery присваивает вновь созданную ссылку на переменную? - PullRequest
2 голосов
/ 25 июля 2010

Как мне назначить эту вновь созданную ссылку локальной переменной?

tblOutput += '<td>';

tblOutput += $('<a></a>')
    .click(function (e) {
        $.fancybox({ 'autoDimension': true, 'showCloseButton': true, 'type': 'iframe', 'href': 'WordManagerForm.aspx?cmd=updateword&amp;categoryNodeID=' + nodeID + '&amp;nodeID=' + id_text });
            e.preventDefault();
        })
    .css('color', 'Blue')
    .text(name_text);


tblOutput += '</td>';

Я пытался применить .html() после .text(name_text), но выводит только текст, а не активную ссылку.Как я могу получить ссылку на работу?После того, как я прошел через цикл, я добавляю переменную tblOutput к div, используя $('#divOut').html(tblOutput);

Это сработало, когда я присвоил его элементу с идентификатором, например <div id="test"...>, а затем .text(name_text).appendTo('#test');.

Полный цикл:

$(xml).find('word').each(function () {                        
                    var id_text = $(this).attr('id');
                    var name_text = $(this).attr('name');
                    var translation_text = $(this).attr('translation');

                    $('<a></a>')
                         .click(function (e) {
                             $.fancybox({ 'autoDimension': true, 'showCloseButton': true, 'type': 'iframe', 'href': 'WordManagerForm.aspx?cmd=updateword&amp;categoryNodeID=' + nodeID + '&amp;nodeID=' + id_text });
                             e.preventDefault();
                         })
                         .css('color', 'Blue')
                         .text(name_text)
                         .appendTo('#bottomRight');
                    $('<br>').appendTo('#bottomRight');
                });

Ответы [ 2 ]

1 голос
/ 25 июля 2010

Вам нужно будет построить таблицу как элементы, а не как строку HTML ... Я не могу сказать точно , что было бы без просмотра внешнего цикла, но вот общая идея:

//row loop...
var row = $("<tr></tr>");

  //create cells here...
  var cell = $("<td></td>");
  $('<a></a>')
    .click(function (e) {
        $.fancybox({ 'autoDimension': true, 'showCloseButton': true, 'type': 'iframe', 'href': 'WordManagerForm.aspx?cmd=updateword&amp;categoryNodeID=' + nodeID + '&amp;nodeID=' + id_text });
            e.preventDefault();
        })
    .css('color', 'Blue')
    .text(name_text)
    .appendTo(cell);
  cell.appendTo(row);
  //end cell loop

row.appendTo('#myTable');
//end row loop

Или, если вы создаете всю таблицу, создайте ее как элемент, а затем сразу добавьте всю таблицу в DOM, поскольку добавление в DOM является относительно дорогой операцией.

0 голосов
/ 25 июля 2010

, чтобы получить внешний html элемента (, включая тот же ), вам нужно обернуть его внутри другого и получить html обертки.

так

.text(name_text)

должен измениться на

.text(name_text).wrap('div').parent().html()

, но css, примененный с помощью jquery, и событие click не произойдет, как только вы добавите эту строку в dom, потому что вы, кажется,сохраняя все как строку, а затем добавляя это в DOM .. ( в тот момент, когда вы конвертируете объект jquery в его строковый эквивалент, вы теряете все динамические изменения DOM в свойствах (с .css()) и все событий прилагается .. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...