2016-10-18 2 views
0

Так что я вложенное DIVs и простой вариант может быть показан, как это:JQuery/Bootstrap: Ребенок ДИВ открывает родительскую Modal

$('#parent').click(function() { 
 
    $('.parent').modal('show'); 
 
}); 
 
    
 
$('#child').click(function() { 
 
    $('.parent').modal('hide'); // Added to try and hide 
 
    $('.child').modal('show'); 
 
    $('.parent').modal('hide'); // Added to try and hide 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child"> 
 
    </div> 
 
</div> 
 

Дела в том, когда я нажимаю на ребенке div, родительский диалог также появляется за дочерним диалогом.

Любой способ обойти это?

+1

Есть ли e.preventDefault() '$ ('# child'). Click (function (e) {e.preventDefault(); // делать другие);' помогает вам? –

+0

К сожалению, нет – pee2pee

ответ

2

Это происходит потому, что событие вашего дочернего щелчка пузырится до родителя. Используйте e.stopPropogation() для дочернего div. Это предотвратит распространение вашего события click на родителя.

$('#parent').click(function() { 
 
    $('.parent').modal('show'); 
 
}); 
 
    
 
$('#child').click(function(e) { 
 
    e.stopPropogation(); 
 
    $('.parent').modal('hide'); // Added to try and hide 
 
    $('.child').modal('show'); 
 
    $('.parent').modal('hide'); // Added to try and hide 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="child"> 
 
    </div> 
 
</div>

+1

Обнаружено, что это было то, что мне нужно, но я отвечу на ваш ответ спасибо! – pee2pee

+0

Я этого не делал. В то время я не мог этого сделать, но теперь я подожду еще немного. – pee2pee

0

Вы можете иметь дело с такими случаями легко упоминанием цели в атрибуте, как показано ниже.

$('#parent, #child').click(function() { 
    var target = $(this).data('target'); 
    $('.'+target).modal('show'); 
    // write code to hide others if necessary 
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="parent" data-target="parent"> 
    <div id="child" data-target="child"> 
    </div> 
</div> 
0

Попробуйте, прежде чем показывать модальный:

$('.modal').remove(); 
$('.child').modal('show'); 

Удалить модальный перед использованием шоу. Надеюсь, это исправит вашу проблему.

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