asp.net JQuery .hover事件发出“对象预期”错误

时间:2009-07-17 16:40:11

标签: asp.net jquery hover

这就是我所拥有的

在我的.master页面上,我有以下

<script type="text/javascript">
$(document).ready(function() {
    $(this).hover(function() {
        $(this).addClass("ui-state-hover");
    },
        function() {
            $(this).removeClass("ui-state-hover");
        }
    ).mousedown(function() {
        $(this).addClass("ui-state-active");
    })
    .mouseup(function() {
        $(this).removeClass("ui-state-active");
    });
});

我的asp.net按钮声明如下

<asp:button runat="server" id="cmdSubmitShipmentRequest" cssclass="ui-button ui-state-default ui-corner-all" text="Submit" />

预期的行为是,只要鼠标指针悬停在任何按钮中,就会添加和删除上面声明的css类。目前默认的css属性适用,但是当我悬停进出按钮时,我得到以下错误“对象预期”第11行(IE8其他浏览器不显示任何内容),这是"<script type="text/javascript">"开始的位置。

关于我可能做错什么的任何线索?

用答案编辑

<小时/> 我做错了两件事

  1. 我正在使用 $(this).hover 应该是 $('。ui-button')。hover 我最初但是我输入了它为 $(“。ui-button”)。悬停注意双重报价!

  2. 在我的.master页面上,我使用asp.net javascript管理器声明我的javascript,如下所示

                                        

  3. 问题是我的javascript代码块下面有脚本声明!

    最后,这就是javascript和代码块的样子,并且一切正常。

    <asp:scriptmanager id="scriptManager" runat="server">
        <scripts>
            <asp:scriptreference path="~/javascript/jquery-1.3.2.min.js" />
            <asp:scriptreference path="~/javascript/jquery-ui-1.7.2.custom.min.js" />
            <asp:scriptreference path="~/Javascript/thickbox.js" />
        </scripts>
    </asp:scriptmanager>
    
     <script type="text/javascript">
         $(document).ready(function() {
             $('.ui-button').hover(function() {
                 $(this).addClass("ui-state-hover");
             },
                function() {
                    $(this).removeClass("ui-state-hover");
                }
            ).mousedown(function() {
                $(this).addClass("ui-state-active");
            })
            .mouseup(function() {
                $(this).removeClass("ui-state-active");
            });
         });
    </script> 
    

3 个答案:

答案 0 :(得分:3)

尝试将代码更改为此....

$(document).ready(function() {
    //SELECT THE .ui-button CLASS INSTEAD OF this
    $('.ui-button').hover(function() {
        $(this).addClass("ui-state-hover");
    },
                function() {
                    $(this).removeClass("ui-state-hover");
                }
        ).mousedown(function() {
            $(this).addClass("ui-state-active");
        })
        .mouseup(function() {
            $(this).removeClass("ui-state-active");
        });
});

我不相信当您使用这行代码时,“this”具有您所定位的上下文...

$(this).hover(function() {

尝试使用以下内容替换上面的行...

$('.ui-button').hover(function() {

答案 1 :(得分:1)

这会给你更多你想要的吗?

另外,请确保在此之上的某处包含jquery库。

$(document).ready(function() {
    $('.ui-button').hover(function() {
        $(this).addClass("ui-state-hover");
    },
                function() {
                    $(this).removeClass("ui-state-hover");
                }
        ).mousedown(function() {
            $(this).addClass("ui-state-active");
        })
        .mouseup(function() {
            $(this).removeClass("ui-state-active");
        });
});

答案 2 :(得分:1)

在您当前的代码段中,$(this)指的是$(文档)。试试这个:

$(document).ready(function() {  
    $('.ui-button').hover(function() {  
        $(this).addClass("ui-state-hover");  
    }, <rest of code omitted>
}

现在$(this)指的是$('。ui-button'),这就是你想要的。