改变失去绑定参考

时间:2010-12-18 00:08:43

标签: javascript jquery

拥有一个使用该ID从外部文件中获取特定内容的链接(有效,此处没有问题)。然后我更改链接的ID以便新ID,以便可以从外部文件获取新信息,但始终显示相同的信息。所以,我正在寻找一些帮助来弄清楚为什么没有加载新信息而是旧信息。

以下是设置新ID值的代码。它位于代码的完全独立部分。然后它调用函数 fncSetupInfoWindow()并创建绑定。 .windowInfo 是特定元素的类集。

$('#pickedCenterProgram a').text(newProgram[0]).parent().slideDown().attr('id', newVal).attr('title', newProgram);
fncSetupInfoWindow();


function fncSetupInfoWindow() {
$('.windowInfo').unbind('mouseover mouseout').each(function () {
    var obj = $(this), position = [], contentID = globalObjects.emptyString, title = obj.attr('title'), contentID = obj.attr('id').toLowerCase();
    obj.bind({
        mouseover: function (e) {
            position = fncGetPositionArray(e.pageX, e.pageY);
            fncLoadStatusInfo(position[0], position[1], contentID, title);
        },
        mouseout: function () {
            $('#modInfoWindow').closeModal();
        }
    });
});

}

以下是加载信息的代码

function fncLoadStatusInfo(x, y, programName, title) {
initLoader.className = 'txt-c'; //create loader
initLoader.iconClass = 'alignVert-b';
$('#modInfoWindow').createModalWindow({ isModal: false, left: x, top: y, ignorePosition: false, title: title, width: 250, hideCloseIcon: true, autoOpen: true }).html(initLoader.createLoader());
$('#modInfoWindow').load('../pages/infoFile.htm ' + '#' + programName);
return false;

}

除了没有使用新分配的ID而是创建页面时的原始ID时,一切都很有效。我已经尝试了很多东西,甚至破坏了模态(又名对话框)窗口都具有相同的结果。

谢谢^。^

感谢。

1 个答案:

答案 0 :(得分:0)

问题是你在绑定时使用id (在.each()内),而不是在时使用事件(在事件处理程序内)。您可以在事件发生时简化整体事务:

function fncSetupInfoWindow() {
  $('.windowInfo').bind({
      mouseover: function (e) {
          var pos = fncGetPositionArray(e.pageX, e.pageY);
          fncLoadStatusInfo(pos[0], pos[1], this.id.toLowerCase(), this.title);
      },
      mouseout: function () {
          $('#modInfoWindow').closeModal();
      }
  });
}

使用.hover()甚至更简单(可能你想要的东西):

function fncSetupInfoWindow() {
  $('.windowInfo').hover(function (e) {
    var pos = fncGetPositionArray(e.pageX, e.pageY);
    fncLoadStatusInfo(pos[0], pos[1], this.id.toLowerCase(), this.title);
  }, function () {
    $('#modInfoWindow').closeModal();
  });
}