使用ASP.NET MVC 4的jQuery UI 1.10.0选项卡:有时选项卡将作为锚点触发

时间:2013-02-27 11:36:37

标签: jquery jquery-ui

升级到jQuery UI 1.10.0后,标签不再正常工作。有时单击选项卡会生成刷新窗口,其中包含对MVC操作的ajax调用的内容。 所以看起来在ui-tabs事件之前调用了锚事件???

HTML code:

...
<div id="rightTabsPanel">
    <ul>
        <li class="tab-shadow"><a href="@Url.Action("Agenda", "Home")">Agenda</a></li>
        <li class="tab-shadow"><a href="@Url.Action("Twitter", "Home")">Twitter</a></li>
        <li class="tab-shadow"><a href="@Url.Action("Buienradar", "Home")">Buienradar</a></li>
        <li class="tab-shadow"><a href="@Url.Action("FileKaart", "Home")">File kaart</a></li>
    </ul>
</div>
...

我的javascript代码:

    $(document).ready(function(){
    ...
    $("#rightTabsPanel").tabs({
        //Replacement for cache:false 
        beforeLoad: function( event, ui ) {
            if ( ui.tab.data( "loaded" ) ) {
                event.preventDefault();
                return;
            }

            ui.jqXHR.success(function() {
                ui.tab.data( "loaded", true );
            });
        },
        beforeActivate: function (event, ui) {
            if (ui.oldTab.text() == "Twitter" || ui.oldTab.text() == "Yammer") {
                $("#slider-code", ui.oldTab).empty();
            }
            else if (ui.oldTab.text() == "File kaart") {
                fileKaartDeInitialize(ui.oldPanel);
            }
        }
    }).bind('tabsload',function(event, ui){ 
          if (ui.tab.text() == "Agenda") {
              var $this = $('#slider-code', ui.panel);

              $this.tinycarousel({ axis: 'y', interval: true, controls: false, intervaltime: 7000 })
          }
          else if (ui.tab.text() == "Twitter") {
            var $this = $('#slider-code', ui.panel);

            $this.tinycarousel({ axis: 'y', interval: true, controls: false, intervaltime: 5000 })
         }
          else if (ui.tab.text() == "Buienradar") {
            var $this = $('#slider-code', ui.panel);
        }
          else if (ui.tab.text() == "File kaart") {
              fileKaartInitialize($('.fileKaartPage'));
        }
    });

   $("#rightTabsPanel .ui-tabs-nav li").unbind();
   ...
}

仔细阅读jQuery UI 1.10 Upgrade Guide后,我可以修复代码中的一些小错误,但上述错误仍然存​​在。

我的问题:   - 升级到jQuery UI 1.10后有没有人遇到同样的问题?   - 有没有人有解决方案或想法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

你并不孤单。使用NuGet包升级到JQuery 1.9.1和JQuery UI 1.10.0后,我遇到了同样的问题。所以,至少你知道这个问题不是你的项目所特有的。选项卡正确呈现,但单击时,它们直接将URL发送到浏览器,而不是通过Ajax检索内容。我对JQuery比较陌生,所以我还没有调试背景来深入了解它。

代码示例(显然就像它在这里一样简单):

<div id="tabs">
<ul>
    <li><a href="/AllWorkTab">All Work</a></li>
    <li><a href="/MyWorkTab">My Work</a></li>
    <li><a href="/PhotoTab">Photos</a></li>
    <li><a href="/WeatherTab">Weather</a></li>
</ul>

<script type="text/javascript">
    $(function () {
        $("#tabs").tabs();
    });
</script>

答案 1 :(得分:0)

对我来说,答案是在其他一些依赖的JavaScript库中。依赖库代码中的错误会缩短页面上的JQuery执行。我相信这是“Microsoft JQuery Unobtrusive Ajax”软件包,之后需要升级。