JQuery UI Dialog с обратным вызовом в действии кнопки терпит неудачу второе открытое диалоговое окно - PullRequest
1 голос
/ 17 мая 2011

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

<script>
$(document).ready(function() {
   $("#somebutton").click(function() {
       $.get("someurl", function(data){
          $("#PartsDialogDiv").html(data);
          $("#PartsDialogDiv").dialog("open");
       });
    });


   $("#PartsDialogDiv").dialog({
           autoOpen: false,
           width: 600,
           resizable: false,
           modal: true,
           buttons: {
               "Use Part": function() {
                   $.get("someurl", function(data){
                       $("#AnotherDIV").html(data);
                   });
                   $(this).dialog("close");
               },
               "Cancel": function () {
                   $(this).dialog("close");
               }
           }
     });
});
</script>
<div id="PartsDialogDiv"></div>
<div id="AnotherDIV"></div>

Что происходит, когда я нажимаю кнопку, которая вызывает .dialog ("open") после выполнениядействие кнопки «Использовать деталь» - не открывается.На самом деле, он утверждает, что:

Object doesn't support this property or method

У меня такое ощущение, что при обратном вызове при первом нажатии «Использовать деталь» не удается сохранить настройку dailog для PartsDialogDiv, и он больше не знает, что div можетчтобы этот метод пользовательского интерфейса jquery вызывался.

Имея все это в $ (document) .ready (), я не уверен, как обработать повторную инициализацию этого div в диалоговом окне, не помещая его в «Use Part«Функция кнопки.

Кто-нибудь сталкивался с этим и есть какие-нибудь полезные советы или советы, как с этим справиться?

Заранее спасибо!

Это MVC3, но неЯ абсолютно уверен, что это актуально.

ОТВЕТ (так как я не могу ответить на свой вопрос до 8 часов после публикации): мне удалось его решить.Джен и Джордж Камминс оба привели меня к такому выводу, что мое частичное представление было плохим.

В мое частичное представление я включил следующие сценарии:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" 
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" 
       type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" 
       type="text/javascript"></script>

Они были сгенерированы автоматически (или я включил их вслепую)их почему-то) и не нужны.Я удалил их, и все работает как положено.

Большое спасибо за ваше время всем!

1 Ответ

0 голосов
/ 17 мая 2011

Звучит так, как будто что-то меняет «#PartsDialogDiv», когда происходит нажатие кнопки «Использовать деталь».Нам нужно было бы видеть код вместо "// Делать что-то", чтобы убедиться, но вы можете проверить этот код и изменить его при необходимости.В частности, ищите вызовы .destroy () или .disable ().

...