0

jquery uiのサイズ変更可能なインスタンスを開始しようとしていますが、jquery自体によってDOMに追加されたセレクターを使用しています。これは私のスクリプトの基本的な例です。

HTML:

<div class='lyr'></div>

jQuery:

// Add class
$('lyr').addClass('fixed');

// Resizable
$('.fixed').resizable({
    aspectRatio: true,
    handles: 'all'
});

live()またはbind()に沿って何かを使用することを考えましたが、バインドするイベントがありません。助けていただければ幸いです。

4

2 に答える 2

1

私がこれを正しく理解していれば、ページの読み込み後にクラスが追加されたとしても、クラスが「修正された」ページ上の何かをサイズ変更できるようにしたいですか?あなたは正しいです、生きて、縛って、委任することはここで助けになりません。

私は2つの可能性を考えることができますが、どちらも素敵ではありません。

まず、ライブの「マウスエンター」イベントを設定します。これにより、以前になかった場合に要素のサイズを変更できるようになります。

$(body).delegate(".fixed", "mouseenter", function(ev) {
    var target = $(ev.target);
    if (target.data("resizable")) return;
    target.resizable({
        aspectRatio: true,
        handles: 'all'
    });
})

これにより、バインドするイベントがないという問題を回避できます。

または、jQuery.fn.addClassにモンキーパッチを適用することもできます。

var classRe = new RegExp(c + className + \b);
._addClass = jQuery.fn.addClass;
jQuery.fn.addClass = function(className) {
    if (classRe.test(classname)) {
        if (this.data("resizable")) return;
        this.resizable({
            aspectRatio: true,
            handles: 'all'
        });
    }
    jQuery.fn._addClass.apply(this, arguments);
}

もちろん、これは、クラスがaddClassメソッドを介して追加された場合にのみ機能します。

また、あなたの例では、

$('lyr').addClass('fixed');

おそらく次のようになります。

$('.lyr').addClass('fixed');
于 2011-11-03T13:45:56.417 に答える
1

私は過去にLiveQueryプラグイン(http://brandonaaron.net/code/livequery/docs )を使用して、あなたの場合のように、DOMに追加された要素をターゲットにできるようにしました。

于 2011-11-03T13:49:05.137 に答える