2016-12-13 3 views
0

У меня проблемы с диалоговом окне jquery. У меня есть несколько divs, действующих как кнопки, и вы хотите открыть диалог с разными результатами, в зависимости от щелчка div. Это все работает, но когда я нажимаю вторую кнопку, я получаю сообщение об ошибке «TypeError: $ (...). Dialog не является функцией».jquery ui dialog wont open again

Если я удалю вызов ajax, он работает нормально, поэтому я предполагаю, что мне нужно «удалить» или «закрыть» что-то, чтобы получить последующие нажатия кнопок для работы.

Предупреждение() срабатывает одновременно, но после этого ничего не происходит.

В упрощенном коде у меня есть REMMED вызов ajax, поэтому он будет работать, но, конечно, с пустыми диалогами.

<!doctype html> 
 
<html lang='en'> 
 
<head> 
 
</head> 
 

 
<body> 
 

 
<div class='row'> 
 
    <div class='large-3 columns'> 
 
     <div class='floatleft changepriority' id='1026' style='padding:6px;'>[1026] 0 : </div> 
 
     <div class='floatleft changepriority' id='715' style='padding:6px;'>[715] 1000 : </div> 
 
     <!-- Various more "buttons" --> 
 
    </div> 
 
</div> 
 

 
<script src='bower_components/jquery/dist/jquery.js'></script> 
 
<script src='/js/jquery-ui.js'></script> 
 
<script src='bower_components/what-input/what-input.js'></script> 
 
<script src='bower_components/foundation-sites/dist/foundation.js'></script> 
 

 
<script> 
 
    $(document).ready(function() { 
 

 
     $(document).foundation(); 
 

 
     $('#changetasklist').dialog({ 
 

 
      modal: true, 
 
      autoResize:true, 
 

 
/* 
 
      open: function() { 
 
       $(this).load('/ajax/changetasklist.php?tl=' + $('#changetasklist').data('tasklist')); 
 
      }, 
 
*/ 
 
      position: { my: 'center top', at: 'center top+20', of: window }, 
 
      width:700, 
 
      title: 'Update Task Heading', 
 
      autoOpen: false, // makes #box hidden when the page starts 
 
      closeOnEscape: true, // closes when ESC is pressed, as well as the [x] top right. 
 
     }); 
 

 
     $('.changepriority').click(function() { 
 
      alert('clicked'); 
 
      $('#changetasklist').data('tasklist', this['id']); 
 
      $('#changetasklist').dialog('open'); // open the box 
 
     }); 
 

 
    }); 
 
    </script> 
 

 
<div id='changetasklist'></div> 
 

 
</body> 
 
</html>

+0

Попробуйте ссылаться на элемент непосредственно, а не 'this', я думаю, это не то, что вы ожидаете' $ ("# changetasklist"). Load (...) ' – Steve

+0

Если вы положили перерыв на вызов ajax, вы попадаете туда во второй раз. Это где код не работает? – Steve

+0

@steve извините, непонятно, что вы предлагаете, что я делаю с «этим». Я вижу только одно это, то есть это ['id'], которое получает идентификатор щелкнутого элемента, id = '1026' или id = '715'. и в моем коде нет нагрузки(). Можете уточнить, пожалуйста? –

ответ

0

Я думаю, что проблема может быть, возможно, связанные с включением необновляемой библиотеку JQuery UI. Я только что попробовал с jQuery UI CDN и не имел этого «TypeError: $ (...). Диалог не является функцией». Ответьте на этот вопрос: Error: TypeError: $(...).dialog is not a function

Кроме того, я думаю, было бы хорошо, если бы вы добавили содержимое changetasklist.php, потому что эта ошибка возникает, когда вы делаете вызов Ajax.

+0

Я упрощу changetasklist.php, чтобы упростить. Я считаю, что это всегда лучший способ двигаться вперед. Но любой щелчок, который я выбираю для первого диалога, работает нормально, это последующие клики, которые не срабатывают. Я проверю библиотеку, спасибо за предложение. –

+1

It * был * changelist.php, что вызывало проблему. Я изменил его, чтобы просто эхо «hello world», и несколько кликов работали. Так что я посмотрел в него дальше, и нашел линию <сценарий SRC = «/ bower_components/JQuery/DIST/jquery.js»> Когда я удалил эту строку (не знаю, почему он был там!) все сработало. Теперь все, что мне нужно сделать, это выяснить, почему он был там - в этом файле есть больше дел. Спасибо за ваше предложение –