<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
        <asp:ScriptReference  Path="~/hello.js"/>
        </Scripts>
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </ContentTemplate>
        </asp:UpdatePanel>hello.js$(function () {
    $("#Button1").click(
    function () {
        alert('hello');
    }
    );
})遇到一个奇怪的问题,第一页面加载的时候click事件有用,但是再点击事件就不触发了。我思考了一段时间发现
$(function () {}是页面加载的意思,我想在pageload里面每次加载hello.js,但是还没有找到何时的解决方法。请大家指教!

解决方案 »

  1.   

    .net ajax 和jquery不能一起用吧
      

  2.   

    $('#<%=Button1.ClientID%>') 才对..
    用updatepanel就不需要自己写javascript了...
      

  3.   

    你这个用法jquery可以取吗?不可以吧?
      

  4.   

    大家别误解,$('<%=Button1.ClientID%>')jQuery里面没有这种用法!
      

  5.   

    原因很简单,$("#Button1").click是在页面一加载的时候绑定Button1的Click事件,但是经过UpdatePanel的无刷新更新以后,DOM的对象变了,Click事件自然也就不再绑定。解决方法更简单,把$("#Button1").click(function() {})换成,$("#Button1").live("click", function() {}  );
      

  6.   

    lz 可以这样写:
    $(document).ready(function(){
    $("#Button1").bind('click'.function(){   
     alert('hello');
    }); 
    }
    因为 lz 要经过UpdatePanel的无刷新,这就要Button1的click始终有效!
      

  7.   

    可以试一个live方式给按钮绑定事件
      

  8.   


    <asp:ScriptManager ID="ScriptManager1" runat="server">
                   </asp:ScriptManager>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
     <Scripts>
            <asp:ScriptReference  Path="~/hello.js"/>
            </Scripts>
                <asp:Button ID="Button1" runat="server" Text="Button" />
            </ContentTemplate>
            </asp:UpdatePanel>
      

  9.   

    jquery 是脚本,脚本和asp.net ajax混用会出错吗??
      

  10.   

    所谓的asp.net ajax技术说白了也是js脚本文件,不信可以查微软的白皮书,和jquery这种js库本质上是一样的东西,没什么不同,当然也可以混用。另外楼主,上面说的解决方法你看没看到啊,怎么隔这么长时间了还在问。 都好几个人说了,用jQuery 的live()方法取代click()方法就搞定!
      

  11.   

    您这种方法可以用,但是live这个好像我没有用过,了解下!
      

  12.   

    据我了解
    $(function () {
            );
       })

    $(document).ready(function(){
    }); 
    }的简写,你可以查阅下资料。因此这个方法不可以用哦!
      

  13.   

    $(function () {
       $('#<%=Button1.ClientID%>').click(
        function () {
            alert('hello');
        }
        );
    })
    $("#Button1") //获取的是客户端控件
    $('#<%=Button1.ClientID%>')//获取的服务器端控件
      

  14.   

    有点疑问讨论下:你说DOM对象变化了?这个是之前的
    <div id="UpdatePanel1"> 

                    <input type="submit" name="Button1" value="Button" id="Button1" /> 
                
    </div> 
    之后,
     <div id="UpdatePanel1"> 

                    <input type="submit" name="Button1" value="Button" id="Button1" /> 
                
    </div> 
    DOM对象具体你指的是什么?请指教?
      

  15.   

    <asp:ScriptReference  Path="~/hello.js"/>请问,这个是引用js文件吗?
      

  16.   

    你既然都用了updatepannel了 就是没有刷新整个页面了  
    而前面你的jq给button绑定click事件是在dom加载完毕的时候执行的,所以第一次加载的时候会有效 
    所以你用updatepannel只是从后台传过来一个button控件,没有click事件了,当然点了没用了虽然你看html代码是一样的,但是其实是不一样的你可以在updatepannel内执行js 重新绑下看看是否可行
    而且 其实就是一个onclick事件,直接写函数不行吗?
      

  17.   

    首先谢谢的回答,“你既然都用了updatepannel了 就是没有刷新整个页面了 ”这句话很模糊,可能刷新这个词本来就很模糊。
    "updatepannel只是从后台传过来一个button控件"这句话很重要,的却返回来是一个控件。
    但是返回来后,页面还是进行一个生命周期的。这个过程里面难道没有dom加载?这个是我不清楚的地方。按照你的逻辑,应该是没有,应该是在页面加载的时候才有dom的加载。后来我做了这样一个实验。放了两个button,一个加updatepanel,一个没有加。
    结果:第一点击加了updatepanel 的button,第二次点击了没有加updatepanel的button,页面刷新了一下。(注意了)第三次我点击加updatepanel的button的button,结果却有用了!
    这个现象解释了一点,就是updatepanel返回后,页面没有进行脚本的加载。怎么解决这个问题呢。后来我又做了一个这样一个实验,在asp.net ajax中,有个常见的方法,就是脚本 function pageLoad(){$("#Button3").click(
    function ()
    {
    alert('hello');
    });} ,这样的话,每次页面加载的时候,都调用了这个函数,也可以实现。好了,谢谢参与回答的朋友了哦!有你们,我才会一步一步往下想!