2016-12-13 12 views
0

jqueryダイアログに問題があります。複数のdivがボタンとして機能しており、クリックされたdivに応じて異なる結果でダイアログを開きたいとします。これはすべて動作しますが、2番目のボタンを押すと、エラーメッセージ "TypeError:$(...)。dialog is not function"が表示されます。jquery uiダイアログが再び開かない

私はajax呼び出しを削除するとうまくいきますので、後でボタンをクリックするために何かを "削除"または "閉じる"必要があると思います。

アラート()は両方の場合に発生しますが、それ以降は何も起こりません。

簡略化されたコードでは、私は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呼び出しを中断した場合doあなたは二度目にそこに着きます。それはコードが失敗する場所ですか? – Steve

+0

@steve申し訳ありませんが、あなたが "this"としていることを示唆しているものは明確ではありません。 私はこれを見るだけです。つまり、この['id']はクリックされた要素のidを取得します。id = '1026'またはid = '715'です。私のコードにはload()はありません。 明確にできますか? –

答えて

0

私はこの問題は、非更新のjQuery UIライブラリーを含むとおそらく関連することができると思います。私はちょうどjQueryのUI CDNを試してみたが、 "TypeError:$(...)。dialogは関数ではない"という問題はありませんでした。この回答を確認してください:Error: TypeError: $(...).dialog is not a function

また、Ajax呼び出しを行っているときにこのエラーが発生するため、changetasklist.phpの内容を追加するとよいでしょう。

+0

簡略化するためにchangetasklist.phpを簡略化します。私はこれが常に前進する最善の方法であることがわかります。しかし、私が最初のダイアログのために選択したどんなクリックでもうまくいきますが、それは失敗した後続のクリックです。 私はライブラリをチェックします、提案のおかげで。 –

+1

問題を引き起こしていたのは* changelist.phpでした。私はそれを "hello world"をエコーするように変更し、複数のクリックが機能しました。 は、だから私はさらにそれに見て、見つかった行 <スクリプトSRC =「/ bower_components/jqueryの/ DIST/jquery.js」> 私はその行を削除すると(それがあった理由がわかりません!)すべてがうまくいった。今私がしなければならないのは、それがなぜそこにあったのかを理解することだけです。そのファイルにはさらに多くのことがあります。あなたの提案をありがとう –

関連する問題