下面的jQuery获取一个包含html地址表的局部视图。然后使用jqModal显示地址,并使用鼠标悬停来突出显示地址。这在我的本地机器上工作正常。当我尝试从服务器运行它(Win 2008,IIS 7)时,地址显示在jqModal中,但高亮显示无法工作。此外,从服务器浏览时,这可以正常工作。
<script>
$(document).ready(function() {
$("#Search").click(function() {
displayAddressList();
});
$('#dialog').jqm();
});
function displayAddressList() {
var PostCode = $("#tbSearch").val();
var url = '<%= Url.Action("AddressSearch", "Addresses")%>';
$.get(url, { PostCode: PostCode }, function(data) {
$("#dialog").html(data);
$('table#data_table tr').mouseover(function() {
$(this).addClass('selectedRow');
}).mouseout(function() {
$(this).removeClass('selectedRow');
});
});
}
</script>
<style>
.selectedRow {
background-color: white;
cursor: pointer;
}
</style>
<div class="jqmWindow" id="dialog">
<a href="#" class="jqmClose">Close</a>
</div>
答案 0 :(得分:1)
如果您不关心Internet Explorer 6支持,则可以在CSS中实现行突出显示。
#data_table tr:hover {
background-color: white;
cursor: pointer;
}
如果您这样做,请确保HTML页面顶部有一个有效的DOCTYPE声明。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
答案 1 :(得分:1)
你说只有突出显示无效。通常,您希望使用jQuery的live
函数:http://docs.jquery.com/Events/live - 它意味着在ajax调用(或其他DOM更改)之后绑定事件。您只需在$(document).ready
处拨打一次,而不是每次加载数据。
另一个常见的选择是页面上有多个#data_table
(可能是隐藏的),jQuery只会找到第一个。
答案 2 :(得分:1)
我同意Dr.Jokepu:看起来你的Ajax正在从localhost请求数据(因此它只能在你的开发机器上或在服务器上浏览时)。
答案 3 :(得分:0)
也许它不喜欢:
$('table#data_table tr')
尝试将该选择器更改为:
$('#data_table tr')
否则,尝试使用不同的CSS属性,也许这些特定的属性未被应用。当然,这可能都是方式关闭,但尝试不会有什么坏处。
答案 4 :(得分:0)
我会添加一些提醒,以便您可以查看是否有任何实际情况发生。你也把你的css设置为背景:白色 - 所以你真的会看到任何变化吗 - 它应该是一种颜色吗?!
约什