2012-05-28 57 views
0

引用錯誤的節點ID我有一個點擊每個節點的列表。點擊發送一個節點引用參數,它使用ajax加載一個新的視圖。 jquery通過content-type-tpl.php上的隱藏輸入值收集節點引用號。同樣,新視圖中的節點每個都有一個點擊,它發送一個節點引用參數,該參數使用ajax加載一個新視圖。但是,儘管原始視圖中的點擊正常工作,但新調用視圖中的點擊並未引用正確的節點。而不是引用針對其點擊的節點的節點ID的,在視圖中的下一個節點的節點ID被代替收集。奇怪的是在內容型tpl.php放置<?php echo $node->nid;?>時,正確的節點ID迴盪在頁面上。但遺憾的是,這不是發送給觀點論點的人。因此,單擊新加載的ajaxed視圖中的任何節點,都會發送下一個節點的標識。這裏的javacript:阿賈克斯加載的內容在Drupal

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或這個有關?

回答

0

貌似Drupal.attachBehaviors應該在(目標)已經解僱,而不是(上下文)。它在整個上下文中反映了腳本,而不僅僅是新的ajaxed內容。所以我改變了Drupal.attachBehaviors(context);到Drupal.attachBehaviors(target);

現在它的工作!