Странная проблема с jQuery - PullRequest
1 голос
/ 17 июня 2009

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 ]

1 голос
/ 17 июня 2009

Я бы согласился с DrJokepu: похоже, ваш Ajax запрашивает данные у localhost (следовательно, он работает только на вашем компьютере разработчика или при просмотре на сервере).

Можете ли вы проверить Ajax-запросы в чем-то вроде Firebug (или Fiddler для IE), чтобы увидеть, выполняются ли они на самом деле?

1 голос
/ 17 июня 2009

Если вам не нужна поддержка 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 голос
/ 17 июня 2009

Вы говорите, что только выделение не работает. Как правило, вы хотите использовать функцию jQuery live для этого: http://docs.jquery.com/Events/live - она ​​предназначена для привязки события после вызовов ajax (или других изменений DOM). Вам нужно будет вызывать это только один раз в $(document).ready, а не каждый раз, когда вы загружаете данные.

Другой распространенный вариант - у вас есть более одного #data_table на странице (возможно, скрытого), jQuery найдет только первое.

0 голосов
/ 17 июня 2009

Я бы добавил несколько предупреждений, чтобы вы могли видеть, происходит ли что-нибудь на самом деле. также у вас есть CSS для фона: белый - так что вы действительно увидите, что что-то меняется - это должен быть цвет?

Josh

0 голосов
/ 17 июня 2009

Может быть, это не нравится:

$('table#data_table tr')

Попробуйте изменить этот селектор на просто:

$('#data_table tr')

В противном случае попробуйте использовать другие свойства CSS, возможно, эти конкретные свойства не применяются. Конечно, все это может быть way off, но попробовать не помешает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...