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>
'this'の代わりに要素を直接参照しようと思います。$("#changetasklist ")。load(...)' – Steve
ajax呼び出しを中断した場合doあなたは二度目にそこに着きます。それはコードが失敗する場所ですか? – Steve
@steve申し訳ありませんが、あなたが "this"としていることを示唆しているものは明確ではありません。 私はこれを見るだけです。つまり、この['id']はクリックされた要素のidを取得します。id = '1026'またはid = '715'です。私のコードにはload()はありません。 明確にできますか? –