Селектор атрибутов jQuery не работает внутри вызова $ .ajax (IE6, IE7) - PullRequest
0 голосов
/ 04 августа 2011

Я пытаюсь выбрать некоторые ссылки в своем контенте после вызова AJAX, но, похоже, он не работает в IE6 и IE7 (не тестировал 8 или 9). Ссылки должны быть переопределены при нажатии, и вместо этого должно сработать предупреждение. Тем не менее, IE все еще пытается перейти по адресу. Отлично работает в Chrome и Firefox.

Вот основной документ HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Cavern Sounds - Music production services</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<a href="someplace.html">someplace 1</a>
<div id="content"></div>
<script type="text/javascript">
$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("#content").html(html);
      $('a[href="someplace.html"]').click(function(e){
        e.preventDefault();
        alert("hello world");});
    }
});
</script>
</body>
</html>

и вот "content.html", фрагмент, который вызывается вызовом AJAX

<a href="someplace.html">someplace 2</a>

Интересно отметить, что IE по-прежнему переопределяет первую ссылку (ту, которая не извлекается вызовом AJAX). Это просто ссылка внутри содержимого, полученного вызовом AJAX, которая не переопределяется.

Любые предложения приветствуются. Спасибо!

Ответы [ 3 ]

2 голосов
/ 04 августа 2011

Пожалуйста, попробуйте это, используя live для привязки событий

$(function(){

$('a[href*="someplace.html"]').live('click', function(e){
        e.preventDefault();
        alert("hello world");
});

$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("#content").html(html);
   }
});

});
1 голос
/ 04 августа 2011

Попробуйте этот код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Cavern Sounds - Music production services</title>
<script type="text/javascript" 

src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
$.ajax({
  url: "content.html",
  success: 
    function(html){
      $("body").html(html);
      $('a[href*="someplace.html"]').live("click",(function(e){
        e.preventDefault();
        alert("hello world");}));
alert($('a[href*="someplace.html"]').size());
    }

});
</script>

подробнее здесь Ошибка в селекторе атрибутов jquery и IE6-7

0 голосов
/ 04 августа 2011

Попробуйте использовать .live () вместо .click () или, что еще лучше, используйте .delegate ().

Ссылка, которую вы пытаетесь связать, была представлена ​​позже и может быть недоступна до.привязка click ().

Вот для этого JSfiddle, но теперь похоже, что это проблема с селектором ... JSFiddle

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