Использование Javascript внутри динамически загружаемого UserControl во вкладках jQuery Ui - PullRequest
0 голосов
/ 25 января 2011

Мне нужно вставить некоторый код JavaScript в UserControl, который я загружаю из вызова Ajax через вкладки jQuery Ui. Позвольте мне объяснить ...

Это мой вид (с загруженным jQuery)

<script type="text/javascript">
    $(document).ready(function () {
        $("#tabs").tabs({
        cache: false,
        });
        getContentTab (1);
    });

    function getContentTab(index) {
        var url='<%= Url.Content("~/Home/getUserControl") %>/' + index;
        var targetDiv = "#tabs-" + index;

        $.get(url,null, function(result) {
            $(targetDiv).html(result);
        });
    }
</script>

<div id="tabs">
    <ul>
        <li><a href="#tabs-1" onclick="getContentTab(1);">Nunc tincidunt</a></li>
        <li><a href="#tabs-2" onclick="getContentTab(2);">Proin dolor</a></li>
        <li><a href="#tabs-3" onclick="getContentTab(3);">Aenean lacinia</a></li>
    </ul>
    <div id="tabs-1">
    </div>
    <div id="tabs-2">
    </div>
    <div id="tabs-3">
    </div>
</div>

С этими строками кода я вызываю функцию Ajax для загрузки содержимого в DIV. Это действие от контроллера:

public ActionResult getUserControl(int num)
    {
        return PartialView("TestUC", num);
    }

А это UserControl ...

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
Number... <span id="testSpan"><%=Model.ToString() %></span>!! 
<input type="button" value="Click me!!" onclick="message();" />
<script type="text/javascript">
function message(item) {
    alert($("#testSpan").html());
}
</script>

Проблема в том, что функция message () всегда возвращает 1 (вместо возврата правильного числа).

Мой вопрос ... Как мне добавить скрипт в свой UserControl, чтобы мой код работал правильно?

Ответы [ 2 ]

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

Попробуйте добавить скрипт, подобный этому

<script type="text/javascript" defer="defer">
function message(item) {
    alert($("#testSpan").html());
}
</script>
0 голосов
/ 25 января 2011

Я просто угадываю здесь.

Полагаю, ваша проблема в том, что при загрузке вкладки она остается в DOM, даже если вы открываете другую (т. Е. Если по умолчанию используется номер 1, тобудет оставаться загруженным, даже если вы нажмете второй).

Если это произойдет, при вызове функции сообщения будет несколько элементов с идентификатором "testSpan" и селектором jQuery $ ("#testSpan ") вернет первый из них.

Полагаю, это всего лишь некоторый тестовый код, но для этого конкретного случая я бы добавил добавление <% = Model.ToString ()%> в качестве аргумента.к функции javascript.

Опять же, я просто догадываюсь о поведении функции jquery-ui tabs ().

С уважением

...