2009-11-06 27 views
0

我有一个简单的树形视图,通过对服务器的ajah调用加载子节点。我将缩写html,但你应该得到的主旨。可以选择通过异步(ajax)调用加载的内容文本(内部)吗?

<li id=1>Node 1</li> 

当这个扩展(通过被点击)会有一堆的子节点的负载通过ajah调用(它们不是在页面上开始)

<ul> 
    <li id=1_1>Node 1_1</li> 
    <li id=1_2>Node 1_2</li> 
    <li id=1_3>Node 1_3</li> 
</ul> 

,然后再为节点1_1

<ul> 
    <li id=1_1_1>Node 1_1_1</li> 
    <li id=1_1_2>Node 1_1_2</li> 
    <li id=1_1_3>Node 1_1_3</li> 
</ul> 

现在我们得到的一切,我想有一些像这样在屏幕上(这是简化的尝试和保持清醒)。我使用jQuery:

$('li').live('click', function() { 
    var path = $('li').attr('id'); 
    var parent = '#1_1'; // this would be calculated, assuming 1_1_ node was clicked 
    var grandParent = '#1'; // against calculated 

    var crap = $(parent).text(); // should be 'Node 1_1' 
    var darn = $(grandParent).text(); // should be 'Node 1' 
}); 

两个废话,织补没有得到任何值。我认为这是因为他们不在页面上,需要类似于“活”选择器的东西,类似于jquery的“活”事件。

我想这个问题的答案可能是我想要的,但不知道它是否是最有效的......所以我发布了一个新问题。我会尽力做到这一点,看看我想出了什么,并发布结果。 jQuery Ajax - Get Elements Inner Text

虽然问题是,我将有可能在屏幕上一次可见10,000个节点,因此重新加载和过滤看起来似乎比直接getById类型的选择更慢。

回答

0

我只是试了一下纯HTML代码,它完美的工作。正如你所提到的,如果某些“li”元素不在页面上,它不会为它们启动。

因此,使用jQuery的“Live query”插件,您不需要再次使用jQuery Click事件处理程序,也无需过滤或重新加载。

http://plugins.jquery.com/project/livequery/

+0

我修改我的问题上面,因为我知道,上面的HTML将正常工作,如果它是在页面上开始。由于直到您单击父节点之前,子节点不在页面上,因此文本方法中没有返回任何内容。我可以使用“实时查询”进行点击,但不知道您认为如何选择从该点击加载的内容。 – rball 2009-11-06 19:02:26

+0

垃圾...由于某种原因,它不像以前预期的那样工作,现在似乎正在获取由ajah请求加载的内容。我的错。 – rball 2009-11-06 19:11:51