Jquery 在ajax调用之后,新的';onclick';处理程序不';在页面上的某个地方单击之前,我不会工作
从jQuery get()ajax调用返回后,我遇到了一个问题。响应用附加div填充div。这些新div包含“onclick”事件处理程序。浏览器需要点击页面上的任意位置,然后我才能点击新填充的div并启动它的onclick 编辑通过从“ajaxSearch”中删除“return false”和从“keypress”中删除“event.preventdefault()”来解决此问题 以下是发生的具体情况:Jquery 在ajax调用之后,新的';onclick';处理程序不';在页面上的某个地方单击之前,我不会工作,jquery,javascript-events,Jquery,Javascript Events,从jQuery get()ajax调用返回后,我遇到了一个问题。响应用附加div填充div。这些新div包含“onclick”事件处理程序。浏览器需要点击页面上的任意位置,然后我才能点击新填充的div并启动它的onclick 编辑通过从“ajaxSearch”中删除“return false”和从“keypress”中删除“event.preventdefault()”来解决此问题 以下是发生的具体情况: 在“srchKey”文本框中输入值,然后按Enter键 “ajaxSearch”函数激发并
function displayResults(data) {
$('.searchResults').html(data);
return false;
}
function resultClick(selected, req, callback) {
$('.searchResult').removeClass('selected');
$(selected).addClass('selected');
$.get(req, callback);
return false;
}
function displayRecord(data) {
$('#selectedRecord').html(data);
return false;
}
function ajaxSearch() {
$('#selectedRecord').empty();
var myForm = $('#searchForm');
$.post(myForm.URL, myForm.serialize(), displayResults);
return false;
}
$(function () {
$('#loadingDiv').hide();
$('.watched').blur(ajaxSearch);
$('#srchDate').blur(ajaxSearch);
$(document).keypress(function (event) {
if (event.which === 13) {
event.preventDefault();
ajaxSearch();
}
});
});
我的razor页面看起来像:
...
<div id="searchPage">
@using (Html.BeginForm("Index","Controller",FormMethod.Post, new {id="searchForm"}))
{
<fieldset>
<legend>Criteria</legend>
<div class="search" id="srchKey">
@Html.LabelFor(m=>m.Key)
@Html.EditorFor(m=>m.Key)
</div>
</fieldset>
}
<div class="resultsBlock">
<div class="searchResults" id="unitResults"></div>
<div id="selectedRecord"></div>
</div>
</div>
@section scripts
{
<script src="@Url.Content("~/Scripts/search.js")" type="text/javascript"></script>
}
。。。
@使用(Html.BeginForm(“Index”,“Controller”,FormMethod.Post,new{id=“searchForm”}))
{
标准
@LabelFor(m=>m.Key)
@EditorFor(m=>m.Key)
}
@节脚本
{
}
您可以打开firebug并切换到“网络”选项卡,然后您将看到第一次单击是否有效。您也可以尝试手动添加a&lgt;div onclick='resultClick(this'/Path…',displayRecord')查看它是否有效
此外,您还可以查看firebug中是否存在js错误。第一次单击不起作用。在“onclick”事件触发之前,我必须单击页面上的某个地方。我知道“onclick”正在成功启动,但其行为就像另一个窗口处于活动状态一样,您必须单击要激活的窗口,然后才能在其中工作。甚至单击窗口边框?啊哈!查看“网络”选项卡,我发现“第一次”点击实际上是通过“ajaxSearch”再次发布帖子**这使我了解到,“ajaxSearch”中的“return false”和“keypress”中的“event.preventdefault”导致了这种行为。**谢谢你的帮助!