我对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,而是将每个按钮的nid与"ajaxview"类发送到每个带有"容器"类的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 作为参数并仅加载该视图吗?
你的代码是javascript。您不能使用:
<?php echo $node->nid; ?>
你必须使用jQuery方法来获得你想要的nid。例如,如果您在隐藏的文件中有 nid,例如:
<input type="hidden" id="ID" value="100" />
您可以使用以下 jQuery 来获取 nid:
var nid = $("#ID").val();
事实证明,
我能够使用 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。