奇怪的jQuery问题

时间:2009-06-17 08:49:25

标签: jquery asp.net-mvc

下面的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>

5 个答案:

答案 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请求数据(因此它只能在你的开发机器上或在服务器上浏览时)。

您可以查看类似Firebug(或IE的Fiddler)的Ajax请求,看看它们是否真的被制作了吗?

答案 3 :(得分:0)

也许它不喜欢:

$('table#data_table tr')

尝试将该选择器更改为:

$('#data_table tr')

否则,尝试使用不同的CSS属性,也许这些特定的属性未被应用。当然,这可能都是方式关闭,但尝试不会有什么坏处。

答案 4 :(得分:0)

我会添加一些提醒,以便您可以查看是否有任何实际情况发生。你也把你的css设置为背景:白色 - 所以你真的会看到任何变化吗 - 它应该是一种颜色吗?!

约什