javascript
  • jquery
  • alert
  • 2014-09-10 2 views -2 likes 
    -2

    В настоящее время я использую следующий код для сообщения об отказе, когда пользователь щелкает ссылку на внешний источник;Два окна предупреждения javascript

    $(
        function() { 
        $("a[href^='http://']:not([href*='"+location.hostname+"']), [href^='https://']:not([href*='"+location.hostname+"'])") 
         .attr("target","_blank") 
         .click(function(e) { 
          alert('My message here'); 
         }); 
        }); 
    

    Что работает, но мне нужно добавить второе сообщение, когда нажимается конкретная ссылка. Я попытался добавить некоторые операторы if и else if (пример ниже), но это не работает. Использую ли я правильный метод с else, если я должен попробовать другой маршрут?

    $(
    function() { 
    
    
    $(if "a[href^='http://']:not([href*='"+location.hostname+"']), [href^='https://']:not([href*='"+location.hostname+"'])") 
        .attr("target","_blank") 
        .click (function(e) { 
         alert('My original message here'); 
         }); 
        (else if 
        "a[href^='http://theurlhere'") 
        .attr("target","_blank") 
        .click (function(e) { 
         alert('Test'); 
         }); 
        }); 
    
    +3

    '(еще if' Это случайное Пожалуйста, обратите внимание на некоторые документы –

    +1

    ' if' это утверждение, а не выражение – elclanrs

    ответ

    3

    У вас не может быть 2 предупреждений в одно и то же время. JavaScript выполняет весь код в одном потоке, и как только появится предупреждение, выполнение скрипта не будет продолжаться до тех пор, пока вы не нажмете «ОК».

    Единственный способ, которым вы можете иметь 2 оповещения, реализовать их самостоятельно, например, с помощью bootstrap alerts или modals (или даже обоих).

    Вы также можете заполнить интерактивные обучающие here для undestand JQuery селекторы

    Update:

    Ниже приведен пример кода для 2 модальных оповещений с использованием начальной загрузки и JQuery. Он отображает 2 предупреждения внутри bootstrap modal.

    Html

    <div id='modal' class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> 
        <div class="modal-dialog modal-sm"> 
        <div class="modal-content"> 
         <div id='alert1' class="alert alert-success" role="alert" style="display:none">Second alert will be shown in 3 seconds</div> 
         <div id='alert2' class="alert alert-info" role="alert" style="display:none">Second alert</div> 
        </div> 
        </div> 
    </div> 
    
    <button onclick='showAlerts()'>Show 2 Alerts</button> 
    

    JavaScript

    function showAlerts() { 
        showAlert("alert1"); 
        setTimeout(function() { 
        showAlert('alert2') 
        }, 3000); 
    } 
    
    function showAlert(alertId) { 
        $('#' + alertId).show(); 
        $('#modal').modal('show'); 
    } 
    

    Here работает plunker.

    +0

    спасибо за?... предложения и интерактивные ссылки для учебников.Я не думал о модальном поле в качестве опции, это будет работать лучше, чем простое окно предупреждения. – hoops78

    +0

    @ hoops78 Возможно, вам стоит взглянуть на пример в исходном ответе – 2ooom

    +0

    Спасибо. Я посмотрел, и я думаю, что должен уметь это настраивать, поскольку мне нужны разные предупреждения, в зависимости от того, какая ссылка нажата, а не предупреждение 2 после предупреждения 1. – hoops78

    0

    селекторы должны быть разделены:

    $(function() 
    { 
        $("a[href^='http://']:not([href*='" + location.hostname + "']), href^='https://']:not([href*='" + location.hostname + "'])") 
        .attr("target", "_blank") 
        .click(function(e) 
        { 
         alert('My original message here'); 
        }); 
    
        $("a[href^='http://theurlhere'") 
        .attr("target", "_blank") 
        .click(function(e) 
        { 
         alert('Test'); 
        }); 
    }); 
    
    +0

    Спасибо. Я пробовал выше, и оно вызывает первоначальное предупреждение 5 раз, а не новое. Я сделаю еще несколько исследований и поиграю с этим. – hoops78

    +0

    @ hoops78 вы можете предоставить полный пример, включая HTML-код, используя [скрипка] (http://jsfiddle.net). Я смогу обновить ответ, чтобы исправить проблемы. – Regent

    +0

    Большая часть сайта находится в CMS, поэтому я создал скрипку с частью меню [link] (http://jsfiddle.net/04adydj2/) – hoops78

    Смежные вопросы