ASP.NET MVC - 如何在 getJSON 调用后重新运行 jQuery 选项卡脚本?

发布于 2024-10-31 02:41:06 字数 965 浏览 1 评论 0原文

我有一些数据包装在 3 个 div 中,每个 div 代表一个“选项卡”,以及一个用于创建选项卡效果的 jQuery 脚本。这 3 个选项卡包括营业时间、联系信息、位置信息。

很标准,没什么特别的。加载页面时,将运行以下脚本,创建“选项卡”效果。


    $(document).ready(function () {
        tabs({
            block: "#branch"
        });
    });

我有一个下拉列表,触发对返回 JsonResult 的操作的调用,以及以下代码来处理更改:


    $("#branches").change(function () {
        $("#branches option:selected").each(function () {
            $.getJSON("/Branch/JsonBranch/" + $(this)[0].value, null, function (data) {
                $("#branchinfo").html(data);
            });
        });
    });

该操作是帖子 ASP.NET MVC - 将 Json 结果与 ViewResult 组合

操作代码不相关。问题是,由于我没有重新加载整个页面,因此“选项卡”脚本永远不会再次运行。因此,一旦替换了 html 代码,所有数据都会显示,而不会创建选项卡。

有没有办法在重新加载页面的该部分后再次运行选项卡脚本?我尝试在 .change() 函数调用中添加对 tabs() 的调用,但这不起作用。

任何帮助将不胜感激!谢谢!

I have some data wrapped in 3 divs, each div represents a 'tab', and a jQuery script to create the tab effect. The 3 tabs include hours of operation, contact info, location info.

Pretty standard, nothing special. When the page loads, the following script is run, creating the 'tab' effect.


    $(document).ready(function () {
        tabs({
            block: "#branch"
        });
    });

I have a drop down list that triggers a call to an action that returns a JsonResult, and the following code to handle the change:


    $("#branches").change(function () {
        $("#branches option:selected").each(function () {
            $.getJSON("/Branch/JsonBranch/" + $(this)[0].value, null, function (data) {
                $("#branchinfo").html(data);
            });
        });
    });

The action is a variation on the post ASP.NET MVC - Combine Json result with ViewResult

The action code isn't relevant. The problem is that, since I'm not reloading the whole page, the 'tab' script is never run again. So, once the html code is replaced, ALL the data shows, the tabs are not created.

Is there a way to run the tab script again after just reloading that one portion of the page? I tried adding the call to tabs() in the .change() function call, but that didn't work.

Any help would be appreciated! Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幻梦 2024-11-07 02:41:06

您应该能够将其添加到 getJSON 回调中。

$("#branches").change(function () {
     $("#branches option:selected").each(function () {
         $.getJSON("/Branch/JsonBranch/" + $(this)[0].value, null, function (data) {
             $("#branchinfo").html(data);
             tabs({ block: "#branch" });
          });
     });
 }); 

You should be able to add it in your getJSON callback.

$("#branches").change(function () {
     $("#branches option:selected").each(function () {
         $.getJSON("/Branch/JsonBranch/" + $(this)[0].value, null, function (data) {
             $("#branchinfo").html(data);
             tabs({ block: "#branch" });
          });
     });
 }); 
一笔一画续写前缘 2024-11-07 02:41:06

通常,我将“tabs”类分配给我的选项卡目标。

然后我用 $('.tabs').tabs(); 触发它们

这样,即使在动态添加更多内容之后,我也可以根据需要调用它。

顺便一提;我可以推荐选项卡的 Cookie 插件;这样,您选择的选项卡就会被记住。

Normally, I assing the 'tabs' class to my tab targets.

I then trigger them with $('.tabs').tabs();

That way, I can call it as much as I want, even after dynamicly adding more.

By the way; I can recommed the Cookie plugin for the tabs; that way, your selected tab is remembered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文