I don't know if this is the effects of an update panel или что, но у меня в основном есть раскрывающийся список, который позволяет пользователю выбирать элемент в качестве фильтра. Когда элемент выбран, он должен вернуть только один элемент в сетку. Именно этот конкретный фильтр, скорее всего, вернет запись, которую вы ищете. Это работает отлично, если пользователь нажимает ссылку «применить» для применения фильтра. За ссылкой apply используется некоторый код на стороне сервера (C# в приложении ASP.NET Web Forms).Почему я говорю jQuery, чтобы щелкнуть по моей ссылке, замедляя мою страницу?
У нас был запрос пользователя с чем-то к эффекту:
"Why do I have to click the apply button if I make a selection in this one drop down filter...it should simply get that one record I am searching for. This helps me because I don't have to click the "Apply" button."
Я согласился с ним и думал, что это самый простой способ сделать это ... Я думал: просто, у меня будет обработчик события изменения при выпадающем списке, так что когда будет сделан выбор, я вызову событие щелчка. Что-то по этому поводу:
$("#MainContent_ddlCompany").on("change", function() {
var companyId = $("#MainContent_ddlCompany").val();
$("#MainContent_hdnCompanyValue").val(companyId);
$("#<%=ddlCompany.ClientID %>").trigger("chosen:updated");
if (companyId.length > 0) {
$(".apply").click();
$(".apply").removeClass("applyButton");
$(".apply").addClass("resetButton");
} else {
//cleared selection of a company
$(".apply").removeClass("resetButton");
$(".apply").addClass("applyButton");
}
});
На первый взгляд это не сработало, и я не мог сказать, почему, но после некоторых серьезных Googling я изменил эту строку:
$(".apply").click();
Для этого:
$('.apply')[0].click();
Это отлично поработало ... поэтому я решил проверить его еще. Поскольку я продолжал выбирать одно значение фильтра после другого, я заметил, что страница начала замедляться. Фактически к 6-му или 7-му раз он был довольно непригодным. Я не знаю, почему это происходит, но я подозреваю, что это связано с тем, что эта ссылка с именем класса .apply находится внутри панели обновления.
Но все же я подумал про себя: это было внутри панели обновления, прежде чем я изменил код jQuery, чтобы имитировать событие click. Итак, почему страница замедляется и перетаскивается с помощью этого небольшого фрагмента кода? Вызывает событие из кода jQuery, отображая что-то еще в HTML, которое может вызвать это?
Если я изменил свой код и заставил пользователя нажать кнопку Apply, мы вернемся к нормальной нормальной скорости. Почему это, если я скажу jQuery, чтобы имитировать нажатие кнопки, моя страница замедляется? Он делает то же самое, имитация щелчка этой кнопки ссылки вызывает его метод кода на стороне сервера, будет ли пользователь нажимать на него или у меня есть jQuery.
На данный момент я не понимаю, почему это происходит, потому что эта кнопка находится в панели обновления в любом случае, но когда у меня есть jQuery, щелкните по ней через $('.apply')[0].click();
, страница замедляется после нескольких попыток. Но когда у меня есть пользователь, просто нажмите эту кнопку (без события jQuery click), тогда он отлично работает?
Что мне здесь не хватает?
Try trigger(): $ ('. Apply') [0] .trigger ('click'). – schellingerht
@HenriS. - Почему это даже важно? – JonH
@HenriS. - изменение на то, о чем вы упоминали '$ ('. apply') [0] .trigger ('click');' now ничего не делает, никаких событий нет данных 'Uncaught TypeError: $ (...) [0] .trigger is не функция '... моя проблема не в том, что она не отталкивает нужные мне данные. Моя проблема - это то, что происходит со скоростью страницы. – JonH