Аз съм сравнително нов в jQuery, но имам някои връзки на моята страница, които трябва да превключват секциите на формуляра, видими при щракване, или ако javascript е деактивиран, той прави пълно обратно изпращане, за да превключва тези секции
Работи добре в моята тестова среда, като PostBack се появява след jQuery скрипта, но след като го разположа, PostBack се появява преди събитието jQuery click. Той е инсталиран на сървър на Windows 2003, работещ с IIS 6.0, докато моята тестова среда е Windows XP / IIS 5.1 / VS2010
Ето кода, който използвам. Скриптът се изпълнява в производствена среда, ако го поставя в .ready()
вместо .click()
, но в .click()
дори не получавам предупреждението, така че предполагам, че проблемът е в PostBack, който се появява, преди jQuery скриптът да има шанс да се изпълни.
jQuery:
$(document).ready(function () {
// Toggle Details
$('.toggleDetailsButton').click(function () {
alert('test');
$(this).parentsUntil(".parentRow").parent().next().toggleClass("hidden");
return false;
});
});
Код зад:
Protected Sub rpData_ItemCommand(ByVal sender As Object, ByVal e As RepeaterCommandEventArgs) Handles rpData.ItemCommand
// Manually toggle rows here
End Sub
ASP:
<asp:Repeater ID="rpData" runat="server">
<ItemTemplate>
<tr class="parentRow">
...
<asp:Button runat="server" ID="cmdViewDetails"
CommandName="ToggleDetails" Text="details"
CssClass="buttonAsLink toggleDetailsButton" />
...
</tr>
<tr id="rpData_DetailsRow" class="detailsRow hidden" runat="server">
</tr>
</ItemTemplate>
</asp:Repeater>
Редактиране
Съгласно предложение в коментарите по-долу, изпълнението на функцията jQuery в onClientClick
кара страницата да действа както трябва, но все пак искам да знам защо PostBack възниква след събитието jQuery в моята тестова среда, но преди събитието jQuery в производството.
Забелязах и други разлики между двете. Например, имам и бутон, който включва/изключва div за търсене, който работи добре при тестване, но не и при производство. Той използва $('.toggleSearchButton').next()
, за да получи div под бутона за търсене и превключва името на неговия клас. В производството този обект връща [object Object]
, но извикването на .attr('class')
връща undefined
(както и .attr('id')
, .attr('tag')
и .nodeName
). В моята тестова среда той връща правилните стойности за моя div за търсене.
Тествах това поведение в IE, FF и Chrome. На моята тестова машина работи добре на всичките 3. На моята производствена машина само IE работи както трябва.
alert
не изскача, така че предполагам, че PostBack се случва преди събитието за кликване. Това означава, чеstopPropagation
също няма да се стартира (току-що го тествах и не помага) - person Rachel   schedule 25.01.2012.ready()
- person Rachel   schedule 25.01.2012onClientClick
(onClick
се опитва да направи PostBack, тъй като това е asp бутон). Все пак бих искал да знам защо не мога да използвам синтаксиса, който имам, тъй като бих предпочел да запазя моя javascript извън моите asp файлове, ако е възможно. - person Rachel   schedule 25.01.2012debugger;
и той трябва да се повреди за вас. - person asawyer   schedule 25.01.2012