.NET中的Jquery方法没有执行

时间:2011-04-11 07:58:23

标签: javascript jquery .net visual-studio-2008

我正在运行Visual Studio 2008和.NET 3.5

我使用javascript创建了一个javascript方法(window.unbeforeload),以便在尝试退出网站时向用户发送消息。不幸的是,每次用户点击未在站点外重定向的链接时,都会显示相同的消息。

解决方案:让jquery处理站点内的所有链接点击。但这不起作用。

 <asp:Content ID="ContentHead" ContentPlaceHolderID="head" runat="server">

    <script type="text/javascript" src="HTML/jquery.js"></script>
    <script type="text/javascript">    
     $(document).live('click',function() {
         $("a").click(function() {
             alert("Hello world!");
         });
     });                                       
    </script> 

//许多其他功能

    <script type="text/javascript">
    window.onbeforeunload = function() {
          return "REALLY?"
      }
</script>
</asp:Content>

在这里,我尝试点击网站内的链接创建提醒,但没有成功。

如何在我的应用程序中使Jquery工作?

Sideinfo:我已经验证了jquery文件存在于HTML / jquery.js但是尽管如此,Visual Studio 2008会发出一个未找到文件的警告。另一个与jquery文件具有完全相同路径的.aspx页面不会发出此警告。

更新:

    <%@ Page Language="C#" MasterPageFile="~/Manage/ConceptManager.Master" AutoEventWireup="true" CodeBehind="ConceptManager.aspx.cs" Inherits="DynamicForm.Manage.ConceptManagerPage" %>

<%@ Register src="Controls/Element_MetadataEditor_FieldNode.ascx" tagname="Element_MetadataEditor_FieldNode" tagprefix="uc1" %>

<%@ Register src="Controls/Element_MetadataEditor_TemplateNode.ascx" tagname="Element_MetadataEditor_TemplateNode" tagprefix="uc3" %>

<%@ Register src="Controls/CategoryAttributes.ascx" tagname="CategoryAttributes" tagprefix="usercontrol" %>

<%@ Register Src="Controls/ConfirmDialog.ascx" TagName="DeleteConfirmDialog" TagPrefix="usercontrol" %>
<%@ Register Src="Controls/ConfirmDialog.ascx" TagName="ConfirmDialog" TagPrefix="usercontrol" %>
<%@ Register src="Controls/AddReferenceDialog.ascx" TagName="AddReferenceDialog" TagPrefix="usercontrol" %>
<%@ Register src="Controls/AddIncludeDialog.ascx" TagName="AddIncludeDialog" TagPrefix="usercontrol" %>

<%@ Register Assembly="ExtExtenders" Namespace="ExtExtenders" TagPrefix="ExtExt" %>

<asp:Content ID="ContentHead" ContentPlaceHolderID="head" runat="server">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {

        var mydomain = "mysite.com";
        var leavemessage = "Are you sure you wish to leave?";

        var filterMySitefunction = function(index) {
            return $(this).attr("href").indexOf(mydomain) > -1;
        }
        var filterOtherSitefunction = function(index) {
            return $(this).attr("href").indexOf(mydomain) == -1;
        }
        $("a").filter(filterMySitefunction).click(function() {
            window.onbeforeunload = function() { };
        });
        $("a").filter(filterOtherSitefunction).click(function() {
            window.onbeforeunload = function() {
                return leavemessage;
            };
        });
    });                                       
</script>  
</asp:Content>

4 个答案:

答案 0 :(得分:5)

我完全不知所措。对上面的Peeter没有冒犯,但这似乎是一个过于复杂的解决方案,当通过做类似的事情可以实现同样的目标

$(function($){
    $('a').not('[href*="mydomain.com"]')
          .click(function(e){
              // visiting some other domain!
          });
});

优秀的jQuery: In Action书还建议只检查a[href^="http://"]以检查外部链接,这就是我坚持这样做的方式。

就个人而言(因为我对这一点有点偏执),我把两者拼凑在一起作为一种全能(以防万一有人或某事投入内部绝对URL)。

$('a[href^="http://"]').not('[href*="mydomain.com"]')
                       .click(function(e){
                           // visiting some other domain!
                       });

答案 1 :(得分:3)

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">    
$(document).ready(function(){

    var mydomain = "mysite.com";
    var leavemessage = "Are you sure you wish to leave?";

    var filterMySitefunction = function(index) {
        return $(this).attr("href").indexOf(mydomain) > -1;
    }
    var filterOtherSitefunction = function(index) {
        return $(this).attr("href").indexOf(mydomain) == -1;
    }
    $("a").filter(filterMySitefunction).click(function() {
        window.onbeforeunload = function(){};
    });
    $("a").filter(filterOtherSitefunction).click(function() {
        window.onbeforeunload = function(){
            return leavemessage;
        };
    });
});                                       
</script>  

<a href="mysite.com">Omg</a>
<a href="othersite.com">Omg</a>

工作示例:http://jsfiddle.net/peeter/K8cuE/

答案 2 :(得分:1)

尝试更改此内容:

$(document).live('click',function() {
     $("a").click(function() {
         alert("Hello world!");
     });
 });      

到此:

$(document).ready(function() {
     $("a").click(function() {
         alert("Hello world!");
     });
 });      

答案 3 :(得分:0)

您无需进行实时点击。

$(function() {
    $("a").click(function() {
         alert("Hello world!");
     });
});