Javascript 在父事件之前调用show.bs.modal事件
我有一个引导按钮(我使用了引导4),它打开一个模式,并通过函数将按钮中的数据传输到模式中的表单:Javascript 在父事件之前调用show.bs.modal事件,javascript,jquery,bootstrap-modal,bootstrap-4,stoppropagation,Javascript,Jquery,Bootstrap Modal,Bootstrap 4,Stoppropagation,我有一个引导按钮(我使用了引导4),它打开一个模式,并通过函数将按钮中的数据传输到模式中的表单: $('examplemodel')。在('show.bs.modal',函数(事件) 按钮位于div(父级)中。 当我单击按钮时,父事件在子事件之前调用。 我不希望运行父事件。 我只需要弹出模式打开。 当我试图通过onclick打开按钮时,首先单击它的调用,但数据没有传输。 这是我的代码示例: 这是html <div class="row"> <div class="col-1
$('examplemodel')。在('show.bs.modal',函数(事件)
按钮位于div(父级)中。
当我单击按钮时,父事件在子事件之前调用。
我不希望运行父事件。
我只需要弹出模式打开。
当我试图通过onclick打开按钮时,首先单击它的调用,但数据没有传输。
这是我的代码示例:
这是html
<div class="row">
<div class="col-12 parent">
I'm the parent!
<div class="child">
I'm the child
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo" data-message="@test message" >Open modal </button>
</div>
</div>
</div>
<!-- Bootstrap Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">New message</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="form-control-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="form-control-label">Message:</label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
我是父母!
我是孩子
开放模态
新消息
&时代;
收件人:
信息:
接近
发送消息
这是剧本
<script>
$(".parent").click(function(event){
alert("Parent event");
})
/*
if I add this function I cant transfer the data that in the button
$(".child").click(function(event){
alert("Child event");
event.stopPropagation();
$('#exampleModal').modal('show');
})*/
$('#exampleModal').on('show.bs.modal', function (event) {
alert("btn event");
var button = $(event.relatedTarget) // Button triggered the modal
var recipient = button.data('whatever')
var message = button.data('message')
var modal = $(this)
modal.find('.modal-title').text('New message to ' + recipient)
modal.find('.modal-body input').val(recipient)
modal.find('.modal-body textarea').val(message)
})
</script>
$(“.parent”)。单击(函数(事件){
警报(“父事件”);
})
/*
如果添加此功能,则无法传输按钮中显示的数据
$(“.child”)。单击(函数(事件){
警报(“子事件”);
event.stopPropagation();
$('exampleModal').modal('show');
})*/
$('exampleModal').on('show.bs.modal',函数(事件){
警报(“btn事件”);
var button=$(event.relatedTarget)//按钮触发了模式
var recipient=button.data('whatever')
var message=button.data('消息')
var modal=$(此)
modal.find('.modal title').text('发送给'+收件人的新邮件)
modal.find('.modal body input').val(收件人)
modal.find('.modal body textarea').val(消息)
})
非常简单,在父项单击中,检查目标
是否与按钮
中的数据目标='#examplemodel'
不同,所有这些都使用jquery函数,如下所示:
//get reference to the button
var $button = $("button[data-target='#exampleModal']");
$(".parent").click(function(event){
if (!$(event.target).is($button)) { // be sur button was'nt clicked
alert("Parent event");
}
})
请参见下面的工作代码段:
var$button=$(“button[data target='#examplemodel']);
$(“.parent”)。单击(函数(事件){
if(!$(event.target).is($按钮)){
警报(“父事件”);
}
})
$('exampleModal').on('show.bs.modal',函数(事件){
警报(“btn事件”);
var button=$(event.relatedTarget)//按钮触发了模式
var recipient=button.data('whatever')
var message=button.data('消息')
var modal=$(此)
modal.find('.modal title').text('发送给'+收件人的新邮件)
modal.find('.modal body input').val(收件人)
modal.find('.modal body textarea').val(消息)
})
正文{
背景色:#a3d5d3;
}
.col-12{背景:红色;高度:100px;}
.child{背景:白色;}
我是父母!
我是孩子
开放模态
新消息
&时代;
收件人:
信息:
接近
发送消息
我的荣幸……:)谢谢你的回答,但我的问题是:在我的网站中,当我点击其他所有的孩子时,我需要他们的父母工作。在你的解决方案中,它对任何孩子都不起作用。当所有其他孩子点击时,我需要家长的功能。看看我的衣服。非常感谢@EstyShlomovitz欢迎您,因此请将答案标记为已解决✓ (留下答案):@bRIMOs我做了:)@EstyShlomovitz Thnx:)。