Как получить доступ к элементам в PartialView (загруженном через AJAX-Call) из js-файла (работа с ASP.NET MVC5, Kendo-UI)? - PullRequest
0 голосов
/ 31 октября 2018

ОБНОВЛЕНО -

У меня есть «index.js», этот скрипт отображается в Index.cshtml. Index.cshtml имеет <div id="main"> *KendoPanelBar here* </div> Я успешно загрузил свой частичный вид на панель в main-div.

«MyPartialView.cshtml» имеет: <div id="menu"></div>

В index.js я пытаюсь console.log($("#menu"));

Выходные данные: jQuery-объект длиной 0 . «MyPartialView.cshtml» находится в той же папке, что и «Index.cshtml» (элементы из «Index.cshtml» могут быть успешно выведены).

Как прокомментировал @Guillaume: скрипт должен запускаться после визуализации представления!


Моя настоящая цель - динамически поместить KendoMenu в меню div, которое находится в KendoTemplate в MyPartialView. Для получения MyPartialView я сделал:

mainDiv.append({
            text: "Group1",
            encoded: false,
            contentUrl: "\MyPartialView"  //that successfully put the partial view where I want it
        });

Как прокомментировал @Rory, мне нужно получить доступ к элементам в MyPartialView, когда / после вызова AJAX успешно .

Поэтому я изменил contentUrl:... на content: '<div id="partialHere"><div>' и попытался загрузить частичное представление в этот div:

   $.ajax({
        type: "POST",
        url: myUrl,
        success: function (partialView) {
            $("#menu").kendoMenu({ //does not apply
            dataSource: [{
            text: "<span class=\"k-icon k-i-more-horizontal\"></span>", encoded: false, items: [
                { text: "<span class=\"k-icon k-i-edit\"></span><span>Edit</span>", encoded: false },
                   ]
                 }]
             });
            //dosth
            $("#groupContent").html(partialView); //adding PartialView to DOM
            console.log($("#menu")); //even after adding to DOM, the output is a jQuery-object with length of 0
        }
    });

PartalView загружается в div как есть. Но изменения, которые я делаю в меню div, не применяются.

Что я делаю не так?

1 Ответ

0 голосов
/ 31 октября 2018

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

//dosth
$("#groupContent").html(partialView);

// Partial View has been added to the DOM. Now it is accessible to jQuery  
$("#menu").kendoMenu({ //does not apply
  dataSource: [{
    text: "<span class=\"k-icon k-i-more-horizontal\"></span>",
    encoded: false,
    items: [{
      text: "<span class=\"k-icon k-i-edit\"></span><span>Edit</span>",
      encoded: false
    }, ]
  }]
});
...