从jQuery get()ajax调用返回后我遇到了问题。响应使用额外的div填充div。这些新div包含'onclick'事件处理程序。浏览器需要点击页面上的任意位置才能点击新填充的div,然后点击“onclick”进行点击。
编辑通过从'ajaxSearch'中删除'return false'和从'keypress'中删除'event.preventdefault()来解决此问题
以下是具体情况:
对于用户来说,当您第一次点击其中一个'searchResult'div时,似乎没有任何反应。点击一次后,随后每次点击其中一个'searchResult'div都会按预期工作。
该问题似乎与浏览器无关(至少在Chrome和Firefox中它的功能相同)。
我在我的页面中使用了以下jquery脚本:
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();
}
});
});
我的剃刀页面如下:
...
<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>
}
答案 0 :(得分:1)
您可以打开firebug并切换到网络标签,然后您将看到第一次点击是否有效。您也可以尝试手动添加&amp; lgt; div onclick ='resultClick(this,'/ Path ...',displayRecord)'以查看它是否有效。
另外,你可以看看firebug中是否有任何js错误。