JQuery UI диалог - захватить текст из таблицы DIV и показать - происходит только при первом нажатии - PullRequest
1 голос
/ 13 марта 2011

Я пытаюсь получить некоторый текст в ячейке таблицы в диалоговом окне пользовательского интерфейса jQuery, открывая ссылку в таблице (по одной на каждую строку). Он работает для каждой ссылки один раз, но после этого останавливается.

Вот мой Javascript:

$(function() {
        $( ".abstractlink" ).click(function() {
            $( $(this).parent().find('.abstract') ).dialog({
            modal: true,
            autoOpen: true,
            height: "auto",
            width: "600",
            draggable: "true",
            title: "Project abstract",
            resizable: "false"
            });
        });
    });

Проблема в том (я думаю), что я заново инициализирую диалог каждый раз, когда нажимают на ссылку. Проблема в том, что мне нужно изменить DIV, который должен отображаться при каждом нажатии ссылки (следовательно, поиск элемента с классом 'abstract' в родительском (TR) элементе.

Вот соответствующая часть кода таблицы:

<tr>
    <td><a href="javascript:;" class="abstractlink">View</a><div class="abstract" id="project_abstract_3">Project 3 abstract. Lorem ipsum.</div></td>
</tr>

У меня есть сильное чувство, что это не очень элегантный способ решения этой проблемы, но, поскольку я все еще новичок в jQuery, я так рад, что получил это далеко.

Любые предложения очень ценятся!

Ответы [ 2 ]

0 голосов
/ 13 марта 2011

Документы говорят:

Вызов $ (foo) .dialog () будет инициализировать экземпляр диалога и будет автоматически открыть диалог по умолчанию. Если Вы хотите повторно использовать диалог, Самый простой способ - отключить опция "автооткрытие" с: $ (foo) .dialog ({autoOpen: false}) и откройте его с помощью $ (foo) .dialog ('open'). к закройте его, используйте $ (foo) .dialog ('close').

Подробнее здесь .

Редактировать : Предупреждение, непроверенный код:


$(function() {
    $(".abstract").dialog({
        modal: true,
        autoOpen: false,
        height: "auto",
        width: "600",
        draggable: "true",
        title: "Project abstract",
        resizable: "false"
    });

    $('.abstractlink').click(function() {
        $(this).parent().find('.abstract').dialog('open');
    });

Вы не создаете одно диалоговое окно, вы создаете диалоговое окно для каждого абстрактного div. Затем вы говорите, чтобы они открывались при необходимости.

0 голосов
/ 13 марта 2011

Похоже, вы просто хотите что-то вроде:

$(".abstractlink").live("click", function(){
  // do the onClick work in here
  });
...