2012-04-18 61 views
1

我在Drupal中查看了笑柄。每個傳情者都有一個click()處理程序,它應該發送其節點ID作爲參數,以通過ajax加載視圖。我已經嘗試了2種不同的jQuery方法,但沒有運氣。使用nid參數在Drupal視圖中爲每個節點加載Ajax

第一個示例僅爲視圖中的最後一個節點發送nid。所以無論什麼傳情我只點擊最後一個傳情者的NID都會被髮送。

Drupal.behaviors.ajaxview = function(context) { 
    $(".ajaxclick").click(function(){ 
    $(".container").load(Drupal.settings.basePath + "myajax/" + <?php echo $node->nid;?>;); 
}); 
} 

在第二種方法中,上階層「ajaxview」的按鈕,點擊會發出正確的NID但卻不是發送的只是一個點擊按鈕將其相應的div,它將發送一個NID對每個按鈕與「ajaxview」類轉換爲EACH格式的「容器」類。所以我最終將從每個單獨的預告片生成的每個單一視圖的內容放入每個單獨的div。 WAAAAY太多了!

$(document).ready(function() { 
$(".ajaxclick").click(function(){ 
    $(".container").load(Drupal.settings.basePath + "myajax/" + <?php echo $node->nid; ?>); 

}); 
}); 

這裏是按鈕;

<button class="ajaxclick">click</button> 

而且DIV:

<div class="container"></div> 

任何想法,我怎麼能得到每點擊發送傳情的NID點擊後作爲參數,僅裝入看法?

回答

0

原來我能得到它的工作使用修改了Ionut.A的建議;

Drupal.behaviors.ajaxview = function(context) { 
    $(".ajaxclick").click(function(){ 
    var nid = $(".mynid").eq($('.ajaxclick').index($(this))).val(); 
    $('.container').eq($('.ajaxclick').index($(this))).load(Drupal.settings.basePath + 'myajax/' + nid); 
    return false; 
}); 
} 

and for the html;

<input type="hidden" class="mynid" value=<?php echo $node->nid;?> /> 

我不得不使用class來代替id,因爲id只會從第一個節點返回id。

0

您的代碼是javascript。 不能使用:

<?php echo $node->nid; ?> 

你將不得不使用jQuery的方法來得到你想要的NID。 舉例來說,如果你有一個隱藏的申請,如NID:

<input type="hidden" id="ID" value="100" /> 

您可以使用下面的jQuery來獲取NID:

var nid = $("#ID").val(); 
+0

奇怪的是,它和'<?php echo $ node-> nid; ?>'只發送最後一個nid作爲參數。 – Meggy 2012-04-19 12:00:45

相關問題