1

我对 Drupal 中的预告片有一个看法。每个预告片都有一个 click() 处理程序,该处理程序应该将其节点 ID 作为参数发送以通过 ajax 加载视图。我尝试了 2 种不同的 jquery 方法,但没有运气。

第一个示例仅发送视图中最后一个节点的 nid。因此,无论我单击什么预告片,都只会发送最后一个预告片的 nid。

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

在第二种方法中,单击“ajaxview”类按钮将发送正确的nid,但不是仅将单击的按钮发送到其相应的div,而是为每个按钮发送一个带有“ajaxview”类的nid ” 进入带有“容器”类的每个 div。所以我最终得到了从每个预告片生成的每个视图的内容到每个 div 中。太多了!

$(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 作为参数发送并仅加载该视图吗?

4

2 回答 2

0

你的代码是javascript。你不能使用:

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

你将不得不使用 jQuery 方法来获得你想要的 nid。例如,如果您在隐藏文件中有 nid,例如:

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

您可以使用以下 jQuery 来获取 nid:

var nid = $("#ID").val();
于 2012-04-18T19:32:38.397 回答
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;?> />

我不得不使用 class 而不是 id 因为 id 只会从第一个节点返回 id。

于 2012-04-22T08:31:46.520 回答