2016-11-17 4 views
0

Я использовал bootstrap popover с некоторыми настраиваемыми jquery. Функция Popover работает нормально, но если у меня есть кнопка с внешней ссылкой, ее не работает. Посмотрите код: есть две кнопки «Button1» для popover & «Button2» для внешней ссылки.Bootstrap: ссылка кнопки popover не работает

$(document).ready(function() { 
 
    $("body").tooltip({ 
 
    selector: "[data-toggle='tooltip']", 
 
    container: "body" 
 
    }) 
 
    .popover({ 
 
    selector: "[data-toggle='popover']", 
 
    container: "body", 
 
    html: true 
 
    }); 
 
}); 
 

 
$('body').on('click', function (e) { 
 
    $('[data-toggle="popover"]').each(function() { 
 
    if(!$(this).is(e.target) && 
 
     $(this).has(e.target).length === 0 && 
 
     $('.popover').has(e.target).length === 0) { 
 
     $(this).popover('hide'); 
 
    } 
 
    }); 
 
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<div class="container" style="width:400px; height:400px; background:#000;padding-top:50px;"> 
 
    <a data-placement="top" role="button" class="btn btn-danger" data-toggle="popover" data-content="Popover" data-original-title="" title=""> 
 
    Button1 
 
    </a> 
 
    
 
    <a class="btn btn-danger" href="http://facebook.com" target="_blank">Button2</a> 
 
</div>

+0

Хотите поповер появляться, когда пользователь переходит на него с их мышью или после нажатия на ссылку? Потому что я получил последний вариант работы. –

+0

Он работает нормально в соответствии с ожиданием. Я проверил на своем месте. – Samir

+0

Вам нужно перейти на другой URL-адрес при нажатии второй кнопки? или вы хотите открыть одно и то же всплывающее окно над второй кнопкой? как 1-я кнопка? – Samir

ответ

1

Вы пропустили несколько data-toggle, data-placement синтаксических во второй кнопки! Добавление этих параметров даст второй кнопке ту же функцию, что и первая кнопка. Я добавил это к вашему коду:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<script type="text/javascript"> $(document).ready(function() { 
     $("body").tooltip({ 
      selector: "[data-toggle='tooltip']", 
      container: "body" 
     }) 
       .popover({ 
        selector: "[data-toggle='popover']", 
        container: "body", 
        html: true 
       }); 
    }); 

    $('body').on('click', function (e) { 
     $('[data-toggle="popover"]').each(function() { 
      if(!$(this).is(e.target) && 
        $(this).has(e.target).length === 0 && 
        $('.popover').has(e.target).length === 0) { 
       $(this).popover('hide'); 
      } 
     }); 
    });</script> 

<div class="container" style="width:400px; height:400px; background:#000;padding-top:50px;"> 
    <a data-placement="top" role="button" class="btn btn-danger" data-toggle="popover" data-content="Popover" data-original-title="" title=""> 
     Button1 
    </a> 

    <a class="btn btn-danger" href="http://facebook.com" data-placement="top" data-toggle="popover" data-content="Popover" data-original-title="" title="" target="_blank">Button2</a> 
</div> 
+0

Отлично, но его не работает в браузере iphone – Vishnu

+0

Измените класс на 'class =" btn "' –

+0

, для которого кнопка? – Vishnu

1

Сценарии переполнения стека блокируют вашу ссылку от открытия новой страницы/перенаправления. Попробуйте codepen с кодом: http://codepen.io/TunderScripts/pen/oYYbgW

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

<div class="container" style="width:400px; height:400px; background:#000;padding-top:50px;"> 
    <a data-placement="top" role="button" class="btn btn-danger" data-toggle="popover" data-content="Popover" data-original-title="" title=""> 
    Button1 
    </a> 

    <a class="btn btn-danger" href="http://facebook.com" target="_blank">Button2</a> 
</div> 


$(document).ready(function() { 
    $("body").tooltip({ 
    selector: "[data-toggle='tooltip']", 
    container: "body" 
    }) 
    .popover({ 
    selector: "[data-toggle='popover']", 
    container: "body", 
    html: true 
    }); 
}); 

$('body').on('click', function (e) { 
    $('[data-toggle="popover"]').each(function() { 
    if(!$(this).is(e.target) && 
     $(this).has(e.target).length === 0 && 
     $('.popover').has(e.target).length === 0) { 
     $(this).popover('hide'); 
    } 
    }); 
}); 
+0

есть одна проблема ... ее не работает в браузере iphone .. – Vishnu

+0

подсказка или простая ссылка? –

+0

Подсказка: ее не «увольняют», когда мы нажимаем в любом месте на теле (только в браузере iphone) – Vishnu

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