2010-07-09 127 views
1

我对应用自定义jquery函数的图像有问题。考虑下面的代码块。当从Ajax表单加载内容时,JQuery函数失败

<% Dim sUniqueIdent As String = Now.Ticks.ToString%> 

<div id="chart<%: sUniqueIdent %>"></div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     bindLinksForChart<%: sUniqueIdent %>(); 
    }); 

    function bindLinksForChart<%:sUniqueIdent %>(){ 
     $('div#chart<%: sUniqueIdent %>').chartLinks({ 
      charturl: '<%: Model.ChartPath %>', 
      uniqueident: '<%: sUniqueIdent %>', 
      height: '<%: Model.Height%>', 
      width: '<%: Model.Width%>'   
     }); 
    } 
</script> 

我有此包埋(深)成一些jQuery的选项卡中,我使用的唯一标识符,因为有许多这样的图表。

图表链接函数在div内部加载一个链接div,该链接浮动在顶部,当用户鼠标悬停时,该链接将变为可见。

这工作正常,直到我使用Ajax窗体重新加载某个选项卡上的内容。当形式加载时,它加载所有正确但它无法加载图像和浮动连杆(由chartlinks功能提供)

这里所述内容的形式是

<% Using Ajax.BeginForm("Tab", New With { 
    .controller = "Content"}, 
New AjaxOptions With { 
    .UpdateTargetId = "chartDiv", 
    .InsertionMode = InsertionMode.Replace, 
    .OnSuccess = "bindLinksForChart<%:sUniqueIdent%>"}) 

<input type="submit" id="UpdateChart" value="Update Chart" /></p> 

<%End Using%> 

任何援助将不胜感激

ps。 chartDiv是包含局部视图的div

回答

1

您能详细说明一下您声明唯一标识符的位置以及您在其中一个选项卡上重新加载某些内容的含义吗?

我还没有试过这个,但仍然给这个镜头。

<% Dim sUniqueIdent As String = System.Guid.NewGuid()%> 

<div id="<%: sUniqueIdent %>" class="chart"></div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     bindLinksForChart("<%: sUniqueIdent %>"); 
    }); 

    function bindLinksForChart(indentifier){ 
     $('.chart').chartLinks({ 
      charturl: '<%: Model.ChartPath %>', 
      uniqueident: identifier, 
      height: '<%: Model.Height%>', 
      width: '<%: Model.Width%>'   
     }); 
    } 
</script> 

这将允许你有一个java脚本函数,而不是每个div你有一个不同的函数。然后你就可以改变你的Ajax表单代码:

<% Using Ajax.BeginForm("Tab", New With { 
    .controller = "Content"}, 
New AjaxOptions With { 
    .UpdateTargetId = "chartDiv", 
    .InsertionMode = InsertionMode.Replace, 
    .OnSuccess = "bindLinksForChart(" + sUniqueIdent + ")"}) 

<input type="submit" id="UpdateChart" value="Update Chart" /></p> 

<%End Using%> 
+0

嗨Ritik,感谢的是,您的建议已帮助它清理了我的代码了一点,但我的问题仍然存在。我现在得到一个不同的错误,但它是星期五下午5点我在哪里,我没有时间找到原因..我会在周末或周一进行调查并发布更新。 – CodeKiwi 2010-07-09 06:46:31

+0

当然。如果你能更清楚地了解到底发生了什么,那将会更好。慢慢来。 – 2010-07-09 10:06:48

+1

好的我已经解决了这个问题(在你的建议的帮助下),问题在于我错误地绑定了OnSuccess事件,为了使它工作,需要将它绑定而不用括号(即.OnSuccess =“bindLinksForChart”或作为一个函数(即.OnSuccess =“function(){bindLinksForChart(blah,blah,blah);}” 否则javascript会在控制器运行之前执行。 – CodeKiwi 2010-07-12 01:10:33