2009-09-11 3 views
0

Следующий код приводит к сбою моих браузеров. Для Firefox мне предоставлен вариант, хочу ли я остановить jQuery, потому что он работал дольше, чем нужно.jQuery Непереключатель вызывает бесконечный цикл

div id="divLeaving"> 
    You are about to leave to: <span id="spanLeavingURL"></span> 
    <a id="divLeavingYes" href="#">Yes</a><a id="divLeavingNo" href="#">No</a> 
</div> 
<a href="http://www.google.com">google</a> 

<script type="text/javascript" language="javascript"> 

    $(document).ready(function() { 
     $("a:not(#divLeavingYes, #divLeavingNo)").click(function() { 
      var url = $(this).attr("href"); 
      var test_if_local = url.indexOf("mycompany.com"); 
      if (test_if_local == -1) { 
       $("#spanLeavingURL").text(url); 
       $("#divLeavingYes").attr("href", url); 
       $("#divLeavingNo").click(function() { $(this).dialog('destroy'); }); 
       $("#divLeaving").dialog({ modal: true }); 
       return false; 
      } 
     }); 
    }); 
</script> 

Однако, если я удалю не селектор, это не приведет к краху моего браузера.

<div id="divLeaving"> 
    You are about to leave to: <span id="spanLeavingURL"></span> 
    <a id="divLeavingYes" href="#">Yes</a><a id="divLeavingNo" href="#">No</a> 
</div> 
<a href="http://www.google.com">google</a> 

<script type="text/javascript" language="javascript"> 

    $(document).ready(function() { 
     $("a").click(function() { 
      var url = $(this).attr("href"); 
      var test_if_local = url.indexOf("mycompany.com"); 
      if (test_if_local == -1) { 
       $("#spanLeavingURL").text(url); 
       $("#divLeavingYes").attr("href", url); 
       $("#divLeavingNo").click(function() { $(this).dialog('destroy'); }); 
       $("#divLeaving").dialog({ modal: true }); 
       return false; 
      } 
     }); 
    }); 
</script> 

Как изменить Thes запрос таким образом он выбирает все для #divLeavingYes и #divLeavingNo кроме?

+0

Этот код не разбивает Firefox для меня. Есть ли еще код, который вы можете включить? –

ответ

0

попробовать с этим, я включаю «event.stopPropagation();»:

$(document).ready(function() { 
    $("a:not(#divLeavingYes, #divLeavingNo)").click(function(event) { 
    event.stopPropagation(); 
     var url = $(this).attr("href"); 
     var test_if_local = url.indexOf("mycompany.com"); 
     if (test_if_local == -1) { 
      $("#spanLeavingURL").text(url); 
      $("#divLeavingYes").attr("href", url); 
      $("#divLeavingNo").click(function() { $(this).dialog('destroy'); }); 
      $("#divLeaving").dialog({ modal: true }); 
      return false; 
     } 
    }); 
}); 
+0

Пробовал. Ваше решение не работает. – burnt1ce

+0

Я не знаю, что ваш браузер, в этом примере я отлично работал в IE, Firefox, Chrome и Safary. Перед тем, как вниз, вы можете быть более конкретным, на котором находится ваш браузер, или спросить, какие браузеры используют этот пример. И вы должны иметь в виду, что эти сценарии не будут идеальными, и у меня есть полный HTML-код, чтобы узнать, есть ли ошибка в какой-либо другой части вашего кода. –

0

Я не уверен, как структурирован ваш HTML, но, возможно, вы могли бы получить кусочек JQuery (в) фильтр, чтобы сделать трюк ...

http://docs.jquery.com/Traversing/slice

1

Я не знаю, о реализации Jquery, но:

a:not(#divLeavingYes, #divLeavingNo) 

недействительный селектор CSS3. Селектор: не может принимать только simple selector. Попытка:

a:not(#divLeavingYes):not(#divLeavingNo) 
Смежные вопросы