2010-12-18 58 views
0

有一个链接使用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,但代码创建页面时的原始内容。我已经尝试了很多事情,甚至破坏了所有具有相同结果的模态(又名对话)窗口。

谢谢^。^

谢谢。

+0

你能提供测试案件在http://jsfiddle.net? – 2010-12-18 00:11:59

回答

0

的问题是,您使用的id在它必然(在.each()内)的时间,而不是在事件(事件处理程序中)的时间。使用.hover()

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(); 
     } 
    }); 
} 

或者更简单(可能你想要的):您可以在事件的时间做到这一点,整体简化像这样的事情

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(); 
    }); 
} 
+0

使用悬停是一个更好的选择。不幸的是,这仍然没有解决问题。同样的事情还在发生。 – 2010-12-20 17:41:26

+0

@ user546656 - 你还在看什么问题? – 2010-12-20 17:54:04

+0

原来,解决方案是将新ID传递给函数,而不是试图抓住它。原因仅仅是因为该函数在其他信息完全运行之前运行。 – 2010-12-20 17:59:54