Помогите открыть только один элемент с функцией «dialog» в JQuery (UI) в среде MVC - PullRequest
0 голосов
/ 02 декабря 2010

Привет всем и, пожалуйста, простите меня заранее, если я опущу какие-либо детали, так как это мой первый пост здесь:

У меня проблема с использованием диалоговой команды JQuery. В частности, я хочу, чтобы кнопка «Редактировать» (строка 7 ниже) открывала только 1 окно, а не все позади друг друга. Ниже приведен код, который я сейчас использую, и краткое описание того, что происходит с коддой. Заранее спасибо за чтение!

<!-- C# and HTML code here-->
<table> 
<tbody>
        <% foreach (var item in Model) { %>
    <tr>
    <td>    
                <button class="opener">Edit</button>
                <div class="dialogButton" title="Something"><% Html.RenderAction("Something", "Admin", new { id = item.ID }); %></div>
                 <td>Other values</td>
                  </tr>
</table>

<!-- JQ script is here-->
$(".dialogButton").dialog({ autoOpen: false });
            $(".dialogButton").dialog({ buttons: { "Ok": function () { $(this).dialog("close"); } } });
            $(".dialogButton").dialog({ show: 'fade' });
            $('.opener').click(function () { $('.dialogButton').dialog('open'); });

На данный момент приложение загружает таблицу и имеет кнопку редактирования рядом с каждой строкой (строка 7 выше), однако при нажатии кнопки «Редактировать» Html.RenderAction (строка 8) открывает окна редактирования для всех элементов (item.ID) в списке, а не только для выбранной строки. Это означает, что в настоящее время существует около 25 окон, которые появляются друг за другом.

То, что я хочу, чтобы код делал, но до сих пор не удалось выяснить, - это только открыть окно редактирования для выбранной строки.

Также было предложено заменить последнюю строку в приведенном выше коде (последняя строка 17) следующим кодом:

$('.opener').click(function () { $(this).next().dialog('open'); });

В теории это предполагает открытие только одного элемента, но это не так. Пожалуйста, помогите!

Еще раз спасибо!

1 Ответ

0 голосов
/ 02 декабря 2010

Просто установите уникальный идентификатор для каждого элемента div class = "dialogButton" и кнопки class = "opener"

как div class = "dialogButton" id = "DialogButton_1" и button class = "opener" id = "opener_1. Используйте item.ID или что-то еще, что является уникальным.

и затем вызовите плагин диалога с идентификатором

$ ('. Opener'). Click (function () {$ ('# dialogButton _' + $ (this) .attr ('id')). Dialog ('open');});

По сути, вы будете вызывать диалог, который откликается ядру таким образом

Надеюсь, это звучит логично для вас.

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