Okay, ich bin hier ratlos. Ich habe ein Steuerelement, das aus einer Tabelle besteht. Ich erlaube dem Benutzer, auf den Hyperlink in der unteren Zeile zu klicken, um direkt zur zugehörigen Ansicht zu gelangen.Jquery Click() Error - Nicht im Stack-Bereich
Auf der anderen Seite kann der Benutzer irgendwo anders in der Tabelle klicken und eine Auswahl getroffen werden. Diese Auswahl aktiviert eine Werkzeugleiste, die es dem Benutzer ermöglicht, bestimmte Aufgaben an dem ausgewählten Objekt auszuführen. Wenn der Benutzer erneut auf das ausgewählte Element klickt, möchte ich den Hyperlink programmatisch anklicken. Aber wenn ich die jQuery zum programmatischen Klicken auf einen Hyperlink ausführen, bekomme ich immer den Fehler "Out of Stack Space". Ich bin mir völlig bewusst, dass das Klick-Ereignis rekursiv aufgerufen wird, aber ich habe keine Ahnung, wie ich es verhindern kann! Hier ist mein Code ...
<head runat="server">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<style>
.mouseOver, .mouseOut, .selected
{
width: 120px;
height: 120px;
text-align: center;
vertical-align: top;
display: inline-block;
margin: 5px;
cursor: pointer;
}
.mouseOver
{
border: solid thin #99defd;
background: #e9f8fe;
}
.mouseOut
{
border: solid thin White;
}
.selected
{
border: solid thin #e0a403;
background: #f8f4de;
}
</style>
<script>
(function($) {
$(document).ready(function() {
var $items = $('.mouseOut');
$items.mouseenter(function() {
if ($(this).attr('class') != 'selected')
$(this).attr('class', 'mouseOver');
});
$items.mouseleave(function() {
if ($(this).attr('class') != 'selected')
$(this).attr('class', 'mouseOut');
});
$items.click(function() {
if ($(this).attr('class') == 'selected') {
$(this).find('a').click();
}
else {
$('.selected').attr('class', 'mouseOut');
$(this).attr('class', 'selected');
}
});
});
})(jQuery);
</script>
</head>
<body runat="server">
<form id="form1" runat="server">
<table cellpadding="5" class="mouseOut">
<tr>
<td>
user module thumbnail...
</td>
</tr>
<tr>
<td>
<a id="A1" href="javascript:__doPostBack('ControlPanelHost1$cphCtrl0$lvCollectionView$ctrl0$lnkBtn','')">Users</a>
</td>
</tr>
</table>
<table cellpadding="5" class="mouseOut">
<tr>
<td>
stats module thumbnail...
</td>
</tr>
<tr>
<td>
<a id="A2" href="javascript:__doPostBack('ControlPanelHost1$cphCtrl0$lvCollectionView$ctrl1$lnkBtn','')">Stats</a>
</td>
</tr>
</table>
</form>
</body>
Diese abgespeckte Version wird das Problem vollständig demonstrieren. Danke an alle, die helfen können!
Was dieses Chaos ist '(function ($) {$ (document) .ready (function() {'? – j08691
@ j08691, es ist ein Verschluss. Es sieht nur wie ein Chaos, weil der Code nicht eingerückt ist. –
einfach um meine Neugierde zu befriedigen, was ist der Zweck, einen Abschluss so um den ready() - Aufruf zu wickeln? – Dave