Хорошо, я здесь. У меня есть элемент управления, состоящий из таблицы. Я разрешаю пользователю щелкнуть гиперссылку в нижней строке, чтобы перейти непосредственно к соответствующему представлению.Ошибка JQuery Click() - из пространства стека
С другой стороны, пользователь может щелкнуть в любом месте внутри таблицы и сделать выбор. Этот выбор активирует панель инструментов, которая позволяет пользователю выполнять некоторые задачи по выбранному элементу. Если пользователь снова нажмет на выбранный элемент, я хочу программно щелкнуть гиперссылку. Но когда я запускаю jQuery для программного нажатия на гиперссылку, я все время получаю ошибку «Out of stack space». Я полностью понимаю, что событие click вызывается рекурсивно, но я не знаю, как его предотвратить! Вот мой код ...
<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>
Эта исчерпанная версия полностью продемонстрирует проблему. Спасибо всем, кто может помочь!
Что это за беспорядок? (Function ($) {$ (document) .ready (function() {'? – j08691
@ j08691, это закрытие, оно выглядит только как беспорядок, потому что код не с отступом. –
Just чтобы удовлетворить мое любопытство, какова цель обертывания замыкания вокруг вызова ready() следующим образом: – Dave