0

クリックするだけでノードのリストがあります。クリックすると、ajaxを使用して新しいビューをロードするノード参照引数が送信されます。Jqueryは、content-type-tpl.phpの非表示の入力値を介してノード参照番号を収集します。同様に、新しいビューのノードにはそれぞれクリックがあり、ajaxを使用して新しいビューをロードするノード参照引数を送信します。ただし、元のビューのクリックは正しく機能しますが、新しく呼び出されたビューのクリックは正しいノードを参照しません。クリックされたノードのノードIDを参照する代わりに、ビュー内の次のノードのノードIDが収集されます。配置するときに奇妙な<?php echo $node->nid;?>content-type-tpl.phpでは、正しいノードIDがページにエコーされます。しかし悲しいことに、これはビュー引数に送信されたものではありません。したがって、新しくロードされたajaxedビューで任意のノードをクリックすると、次のノードのIDが送信されます。javacriptは次のとおりです。

Drupal.behaviors.ajaxlinks = function (context) {
    $('.morelink:not(.togg-processed)', context).addClass('togg-processed').each(function () {
      var myindex = $('.morelink').index($(this));
      var target = $('.newthing').eq(myindex)
      var nid = $(".mynid").eq(myindex).val();
    $(this).click(function() {
if (($('.hiddenrows').eq(myindex).is(":hidden")))
{    $('.hiddenrows').eq(myindex).show();
    $('.newthing').eq(myindex).show();
      var toLoad = Drupal.settings.basePath + 'replies/' + nid;
      xhr = $.ajax({
        url: toLoad,
        success: function(data) {
        $(target).html($(data));
     Drupal.attachBehaviors(context);
}
});
}
else
{
    $('.hiddenrows').eq(myindex).hide();
    $('.newthing').eq(myindex).hide();
}
    return false;

これは同じコードなので、新しくロードされたビューで動作が異なる理由がわかりません。誰かが私が間違っていることを見つけることができますか?変数の配置または変数の宣言方法のいずれかと関係があるのではないかと思います。それとも、インデックス、EQ、またはこれの誤用と関係がありますか?

4

1 に答える 1

0

Drupal.attachBehaviorsは(コンテキスト)ではなく(ターゲット)で起動する必要があるようです。それは、新しいajaxedコンテンツだけでなく、コンテキスト全体でスクリプトを再起動していました。そこで、Drupal.attachBehaviors(context);を変更しました。Drupal.attachBehaviors(target);へ

今それは動作します!

于 2012-05-31T18:43:46.230 に答える