2012-04-18 11 views
1

私はDrupalのティーザーのビューを持っています。各ティーザーには、ノードIDを引数として送信してajax経由でビューをロードするはずのclick()ハンドラがあります。私は2つの異なるjqueryアプローチを試しましたが、運がないです。nid引数を持つDrupalビューの各ノードのAjaxのロード

最初の例では、ビュー内の最後のノードのみにnidを送信します。だから私が最後のティーザーのためにナディだけをクリックしてもティーザーが送られます。第二のアプローチで

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

、「ajaxview」クラスのボタンをクリックして正しいNIDが、送信されますが、それはdiv要素を対応だし、ボタンをクリックしただけではなく、いずれかの送信のために、それはそれぞれにNIDをお送りしますボタンを "ajaxview"のクラスで、 "container"のクラスを持つ各divに追加します。だから私はすべての単一のティーザーからすべての単一の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; 
}); 
} 

およびhtml;

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

idの代わりにidを使用する必要があったため、idは最初のノードからidを返すだけでした。

0

あなたのコードはjavascriptです。 あなたが使用することはできません。

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

あなたが欲しいNIDを取得するjQueryのアプローチを使用する必要があります。 たとえば、あなたは隠されたように提出中NIDがある場合:

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

をあなたはNIDを取得するには、次のjQueryを使用することができます。

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

奇妙なことに、これは '<?php echo $ node-> nidと同じことを行います。 ?> 'は、引数として最後のnidだけを送るものです。 – Meggy

関連する問題