0

this関数を起動するときに、渡す要素、特定のjQuery要素だけにリスナーを適用するようにします。

addEventListeners(this);

function addEventListeners(el) {
        $(el).mouseenter(function() { 
            $(this).stop(true,true).switchClass("", "HIGHLIGHT", 400, "easeInOutQuad");
        });
        $(el).mouseleave(function() { 
            $(this).stop(true,true).switchClass("HIGHLIGHT", "", 400, "easeInOutQuad");
        });
    }

AJAXの結果から起動します。

    $.post(url,{el:wartosc_inputa},function(returned) {
        var data = $(returned).hide(); 
        $("#listaElementow").prepend(data); 
        data.slideDown();
        loading();
        addEventListeners(this);
    });

それをうまくコーディングする方法は?このコードはaddEventListeners(this);から関数に変数を渡していません。

4

3 に答える 3

2

ajaxコールバック関数では、「this」は私が考えるajaxオブジェクトであり、もはや要素ではないため、ajaxを開始する前に「this」を変数に保存する必要があります。

that = this;
$.post(url,{el:wartosc_inputa},function(returned) {
    var data = $(returned).hide(); 
    $("#listaElementow").prepend(data); 
    data.slideDown();
    loading();
    addEventListeners(that);
});
于 2012-10-17T17:27:23.363 に答える
0

thisその文脈では、あなたが期待するものではありません。これを試して:

var self = this;
$.post(url,{el:wartosc_inputa},function(returned) {
    var data = $(returned).hide(); 
    $("#listaElementow").prepend(data); 
    data.slideDown();
    loading();
    addEventListeners(self);
});
于 2012-10-17T17:22:44.573 に答える
0

残りのサクセスハンドラーのコンテキストから判断するとreturned、ハンドラーをバインドしようとしているDOM要素であると思います。これが事実であると仮定すると:

$.post(url,{el:wartosc_inputa},function(returned) {
    var data = $(returned).hide(); 
    $("#listaElementow").prepend(data); 
    data.slideDown();
    loading();
    addEventListeners(data[0]);
    // change this    ^^^^
    // pass the DOM element here, or 
    // change the addEventListeners function to take a jquery element
});
于 2012-10-17T17:25:57.690 に答える