我有一个节点列表,每个节点都可以单击。单击发送一个节点引用参数,该参数使用 ajax 加载一个新视图。Jquery 通过 content-type-tpl.php 上的隐藏输入值收集节点参考号。同样,新视图中的每个节点都有一个单击,该单击发送一个节点引用参数,该参数使用 ajax 加载一个新视图。然而,虽然原始视图中的点击工作正常,但新调用视图中的点击并没有引用正确的节点。不是引用被单击节点的节点 ID,而是收集视图中下一个节点的节点 ID。放置时奇怪<?php echo $node->nid;?>
在 content-type-tpl.php 上,正确的节点 ID 会在页面上回显。但遗憾的是,这不是发送到视图参数的那个。因此,单击新加载的 ajaxed 视图中的任何节点,都会发送下一个节点的 id。这是java脚本:
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;
这是相同的代码,所以我看不出为什么它在新加载的视图中工作方式不同。谁能发现我做错了什么?我怀疑这与放置变量或声明变量的方式有关。或者可能与滥用 index 、 eq 或 this 有关?