首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选项卡更改MVC 2时未调用Jquery

问选项卡更改MVC 2时未调用Jquery
EN

Stack Overflow用户
提问于 2012-01-05 05:47:48
回答 2查看 439关注 0票数 1
代码语言:javascript
复制
<%@ Page Title="" Language="C#" MasterPageFile="~/Content/Master1.Master" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewPage<List<TGF.class.abc>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

<script type="text/javascript">

    $(document).ready(function() {

        $('#tabContainer').tabs();

        $('#tab1').click(function() {
            GetInfo('method1', '#info1');
        });

        $('#tab2').click(function() {
            GetInfo('method2', '#info2');
        });

        $('#tab3').click(function() {
            GetInfo('method3', '#info3');
        });

    });


    function GetInfo(url, div) {
        debugger;
        $(div).html('Loading...');

        $.ajax({
            Type: 'POST',
            url: url,
            success: function(html) {
                $(div).html(html);
            },
            error: function(html) {
                $(div).html('An Error Occurred.');
            },
            cache: false
        });

    }

</script>

<div id="tabContainer">

    <!-- Tab Names -->
    <ul>
        <li><a id='tab1' href="#info1"><span>name1</span></a></li>
        <li><a id='tab2' href="#info2"><span>name2</span></a></li>
        <li><a id='tab3' href="#info3"><span>name3</span></a></li>
    </ul>

    <div id="info1">
        <% Html.RenderPartial("Mysharedpage", Model, ViewData); %>
    </div>

    <div id="info2">
      <% Html.RenderPartial("Mysharedpage", Model, ViewData); %>
    </div>

    <div id="info3">
   <% Html.RenderPartial("Mysharedpage", Model, ViewData); %>
    </div>

</div>

这是我的共享页面(Mysharedpage.ascx),

代码语言:javascript
复制
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<TGF.dfg.method>>" %>

<%@ Import Namespace="class.DataContracts" %>
<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        debugger;
        $("#SelectAll").click(CheckAll);
    });
       function CheckAll() {
            $("INPUT[type='checkbox']").attr('checked', $('#SelectAll').is(':checked'));
        }



</script>

现在,问题是当我单击tab1时,它就像往常一样工作,即共享页面(Mysharedpage.ascx)上的CheckAll()函数工作。但是当我单击tab2或tab 3时,Jquery CheckAll()函数没有被调用,也无法工作。当点击tab2或tab3时,Jquery基本上不会被调用。所有3个选项卡都调用相同的共享(.ascx)页面

有什么解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-05 05:55:49

原因是事件处理程序不会将自身附加到动态添加到页面try的元素

代码语言:javascript
复制
$("#SelectAll").on("click",CheckAll);

http://api.jquery.com/on/

票数 0
EN

Stack Overflow用户

发布于 2012-01-05 06:07:05

我在示例代码中没有看到#SelectAll,但我认为它是动态提供的内容的一部分。

您需要委托祖先元素作为侦听器,但当新内容从服务器飞入时不会被销毁。

代码语言:javascript
复制
$('#tabContainer').on('click', '#SelectAll', CheckAll);

我必须承认,我有点错过了预渲染代码(我根本不使用.NET,更不用说MVC-2)……但是看起来CheckAll函数正在飞入这3个区域中的每一个区域。代码实际上应该在主页面的外部,仅作为一个实例。

此外,如果MVC-2限制您只能使用特定版本的jQuery (1.7之前的版本),您将无法使用.on()功能。对于以前版本的jQuery,您可以改用.delegate()。语法的一部分只是简单的反转:

代码语言:javascript
复制
$('#tabContainer').delegate('#SelectAll', 'click', CheckAll);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8734528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档