私は偽のフォームにフィールドを追加するページを持っているので、ユーザーはソースを生成する前にそれを見ることができます。jQuery UIのソート可能な要素をハンドルからドラッグできないのはなぜですか?
私はフォーム内のフィールドをソートして並べ替えることができます。私は、私のajaxとアニメーションのためにjQueryを使用しているので、jquery UIを使用してソートを行うことにしました。
私のフィールドはディナミックに追加されていますので、すべてのイベントを委任し、新しいフィールドが追加されるたびにsortable('refresh');
を使用します。
私のGUIにはフィールドオプションのアイコンがありますので、オプションをsortable()
メソッドに追加しましたが、それはまったく認識しません。ここで
赤いボタンのフィールドを追加し、ドラッグボタンからドラッグしようとすると、機能しません。 handle
を削除しても問題なく動作します。
handle
の値をコンソールに記録するのがわかりますが、ソート可能なオブジェクトは常にログに記録されます。グローバルオブジェクトがあります。NamodgMaker
実験したいですか?ここで
は、フィールドを追加し、sortable()
方法を添付する部分である:
addField: function(type) {
var $html = $(this.fields[type]); // 'this' here is NamodgMaker, and `fields` is from an ajax request
if (type == 'select') {
$html
.find('select')
.styleNamodgSelects({
optionsRight: -6,
optionsTop: 38
});
}
$html.appendTo(this.formHolder);
if (this.formHolder.data('sortable')) {
this.formHolder.sortable('refresh');
console.log(this.formHolder.sortable("option", "handle"));
return
}
this.formHolder
.sortable({
containment: 'parent',
handle: '.drag-field-option'
})
.data('sortable', true)
console.log(this.formHolder.sortable("option", "handle"));
}
これはjQueryのUIと私の初めてです、だから私は間違って何をやっていますか?
更新:$.data()
は、sortable
が間違ったオプションを返すことが判明しました。
addField: function(type) {
var $html = $(this.fields[type]);
if (type == 'select') {
$html
.find('select')
.styleNamodgSelects({
optionsRight: -6,
optionsTop: 38
});
}
$html.appendTo(this.formHolder);
if (! this.formHolder.sortable("option", "disabled") ) {
this.formHolder.sortable('refresh');
console.log('refreshed :' + this.formHolder.sortable("option", "handle"));
return
}
this.formHolder
.sortable({
containment: 'parent',
handle: '.drag-field-option'
})
console.log(this.formHolder.sortable("option", "handle"));
}
今コンソールは、右セレクターをログに記録しますが、それでも、ソート機能が働いていない:私はsortable()
自身のチェック方法を使用するようにコードを変更しました。
更新2:ハンドル要素をbutton
からa
に変更することで問題を解決できました。
これは本当に難しい問題ですが、jQuery UIを初めて使用したのはちょっとした問題だと思いました。 – Maher4Ever