0

私はこのようなものを持っています、そしてそれはjQueryから作成されました.append(html)

 <div class="pPost">
<p>id</p>
<div class="pPostIn">
    <div class="link">
        <a href="http://www.google.com"></a>
    </div>
    <div class="id"></div>
    <div class="txt"></div>
</div>

次に、次のようなjQuery関数を使用します。

編集:3

$(function () {
$(".link").live({
    mouseenter: function () {
        $(this).css("background-position", "0 0"); //this works
        $(".pPost").die();
    },
    mouseleave: function () {
        $(this).css("background-position", ""); //this works
        $(".pPost").live("click", ajaxCall);
    }
});
return false;
});

これは期待どおりに機能しますが、私が解決しようとしている問題は、ライブ関数が「1位になった」ときにその.linkアンカーを実行可能にする方法です。私は/.pPostしようとしましたが、失敗しました:.unbind().undelegate() .pPost

編集:3

var ajaxLoad = function () {
    $(".pPost").live("click", function () {

        $.ajax({
            type: "POST",
            url: "rucno/php/archive_page_helper.php",
            data: idData,
            cache: false,

            success: function (html) {                    
                $(pPost).append(html).hide().slideDown(400, function () {
                    $(".link").hide().delay(1000).fadeIn(1000);
                });
            }
        });            
    });
  return false;
};

もう一度編集しましたが、それでも同じですが、機能しません:)

4

2 に答える 2

0

を使用liveしてイベントをバインドする場合は、を使用dieしてバインドを解除します。
もう一度言うだけでは、イベントを再バインドすることはできません.bind()

イベントを一時的にバインド解除するには、次の質問を参照してください: jquery一時的なバインド解除イベント

編集

var ajaxLoad = function () {
  $.ajax({
    //blablabla
  });
  return false;
};

編集 ajaxの読み込みを再バインドします。

// Rebind like this
$(".pPost").live("click", ajaxLoad);

編集 リンクは内部.pPostにあるため、リロードされると、リンクはバインドを失い、再バインドする必要があります。

// Rebind links
$('a').click(fn);
$('.pPost').load('blabla.html',function() {
    $('.pPost a').click(fn);
});

編集 埋め込みajax呼び出しに注意してください:

var ajaxLoad = function () {
    $.ajax({
        type: "POST",
        url: "blabla.php",
        data: idData,
        cache: false,

        success: function (html) {

            $(pPost).append(html).hide().slideDown(400, function () {
                $(".link").hide().delay(1000).fadeIn(1000);
            });
        }
    });
};

その後:

$(".pPost").live("click", ajaxCall);
于 2012-02-09T13:39:19.977 に答える
0

post jQueryで「RamboNo5」が提案するように解決-イベントが発生した後、onclickイベントリスナーを一時的に無効にするにはどうすればよいですか?

私はそれを変更する必要がありました、これはそれがどのように機能するかです

html

 <div class="pPost">
<p>id</p>
<div class="pPostIn">
    <div class="link">
        <a href="http://www.google.com"></a>
    </div>
    <div class="id"></div>
    <div class="txt"></div>
</div>

js

$(function () {
var active= true;
$(function () {
    $(".link").live({
        mouseenter: function () {               
            active= false;                
        },
        mouseleave: function () {                
            active= true;              
        }
    });
    //return false;
});


$(function () {

    $(".pPost").live("click", function () {

        if (!active) {
            return;
        }

        $.ajax({
            type: "POST",
            url: "rucno/php/archive_page_helper.php",
            data: idData,
            cache: false,

            success: function (html) {                           
                $(pPost).append(html).hide().slideDown(400, function () {
                    $(".link").hide().delay(1000).fadeIn(1000);                        

                });

            }
        });

        return false;
    });
});
});
于 2012-02-11T10:12:51.270 に答える