2009-07-17 1 views
1

Das ist, was ich habeasp.net JQuery .hover Ereignis gibt aus "Objekt erwartet" Fehler

Auf meiner .master Seite Ich habe folgendes

<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"); 
    }); 
}); 

und mein asp. Netzknöpfe sind wie folgt deklariert

Das erwartete Verhalten ist, dass jedes Mal, wenn der Mauszeiger schwebt und aus einem beliebigen Knopf werden die oben deklarierten CSS-Klassen hinzugefügt und entfernt. Derzeit gelten die CSS-Standardeigenschaften korrekt, aber jedes Mal, wenn ich den Mauszeiger über eine Schaltfläche halte, erhalte ich den folgenden Fehler: "Objekt erwartet", Zeile 11 (IE8 andere Browser zeigen nichts an), wo die "<script type="text/javascript">" beginnt.

irgendein Hinweis, was ich falsch machen könnte?

EDIT MIT ANTWORT


ich tat zwei Dinge falsch

  1. Ich war mit $ (this) .hover sollte $ worden ('. Ui-Taste). Hover, die ich zunächst hatte, aber ich tippte es als $ (". UI-Schaltfläche"). Hover HINWEIS DIE DOUBLE QUOTES!

  2. Auf meiner Seite .master ich mein Javascript bin erklärt die asp.net mit JavaScript-Manager wie folgt

das Problem war, dass ich das Drehbuch Erklärungen hatte unter meinem JavaScript-Codeblock !.

Am Ende sieht das aus, wie der JavaScript- und Codeblock aussieht und alles funktioniert wie erwartet.

<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> 
+0

$ (this) .hover (...). Was ist das in diesem Zusammenhang? Versuchen Sie, dies nur auf die Schaltflächen oder auf das Dokument anzuwenden? Tippfehler? –

Antwort

3

versuchen, Ihren Code zu diesem Wechsel ....

$(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"); 
     }); 
}); 

Ich glaube nicht, dass „dies“ den Kontext hat, die Sie gezielt wurden, wenn Sie diese Codezeile verwenden ...

$(this).hover(function() { 

Versuchen Sie, die Linie oben mit dem folgenden zu ersetzen ...

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

Ich hatte "ui-button" in der Vergangenheit benutzt, aber ich benutzte doppelte Anführungszeichen anstatt einfache Anführungszeichen! Ich hatte auch den obigen JavaScript-Code über meine jQuery-Deklarationen, danke auch für die prompte Antwort –

+0

doppelte Anführungszeichen würde auch funktionieren, der Schlüssel hier ist der. auf ".ui-taste" –

1

würde dies Ihnen mehr von dem geben, was Sie wollen?

auch, stellen Sie sicher, dass Sie die Jquery-Bibliothek irgendwo darüber enthalten.

$(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"); 
     }); 
}); 
1

In Ihrem aktuellen Code-Snippet bezieht sich $ (this) auf $ (document).Versuchen Sie folgendes:

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

Jetzt $ (this) bezieht sich auf $ ('ui-Taste.'), Das ist, was Sie wollen.