Ajax加载的内容引用Drupal中错误的节点ID

时间:2012-05-28 13:07:04

标签: php jquery drupal views

我有一个节点列表,每个节点都有一个点击。 click发送一个节点引用参数,该参数使用ajax加载新视图。 Jquery通过content-type-tpl.php上的隐藏输入值收集节点引用号。同样,新视图中的节点都有一个单击,它发送一个节点引用参数,该参数使用ajax加载一个新视图。但是,虽然原始视图中的点击工作正常,但新调用视图中的点击不会引用正确的节点。而不是引用被单击的节点的节点id,而是收集视图中下一个节点的节点id。奇怪的是,当将<?php echo $node->nid;?>放在content-type-tpl.php上时,页面上会回显正确的节点ID。但遗憾的是,这不是发给观点论点的人。因此,单击新加载的ajaxed视图中的任何节点,将发送下一个节点的id。这是javacript:

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;

它是相同的代码,所以我无法理解为什么它在新加载的视图中的工作方式不同。谁能发现我做错了什么?我怀疑它与我声明我的变量的位置或方式有关。或者它可能与误用索引,eq或者这个有关?

1 个答案:

答案 0 :(得分:0)

看起来Drupal.attachBehaviors应该在(目标)而不是(上下文)上触发。它在整个上下文中重新编写脚本,而不仅仅是新的ajaxed内容。所以我改变了Drupal.attachBehaviors(context); to Drupal.attachBehaviors(target);

现在有效!