ウェブサイトには、クリック領域であるdivがあります。このゾーンをクリックするとモーダルが開き、ビデオURLをモーダルに入力する必要があります。 [OK]をクリックすると、ビデオがリストに追加されます。これはクリックゾーン内にもあります。子供をクリックするとjQueryが親トリガーを無効にする
"白い"スペースのどこかをクリックすると、再びモーダルが開きます。しかし、画像をクリックする(またはリンクを削除する)と、モーダルを開くべきではありません。残念ながら、メインのdivのclickイベントは常にトリガされます。
私はこれをevent.stopPropagation()
で解決しようとしましたが、私はそれを使用しているので、私はこの仕事を得ることができません。どうすればこれを達成できるでしょうか。
コードスニペットは、私がやっていることの単純化です。クリックゾーンをクリックして[追加]をクリックします。クリックゾーンに画像が追加されます。あなたはこれを続けることができます。しかし、画像をクリックするか削除するとモーダルが開かないはずです。削除をクリックすると、削除アクションがトリガーされます。あなたは、画像がクリックされたときにイベントを添付する必要が
var $videoModal = $('#videoModal');
var $videoSrc = $('#video-src');
var $videoSortable = $('#videoSortable');
var $videoModalOk = $('#videoModalOK');
$('.video-clickzone').click(function() {
$videoModal.modal('show');
});
$videoModalOk.click(function() {
$videoSortable.append("<li id='lyON3M9P3eU'><img src='http://img.youtube.com/vi/lyON3M9P3eU/0.jpg' width='200' data-video='https://www.youtube.com/embed/lyON3M9P3eU'><div class='text-center' data-video-delete='lyON3M9P3eU'>Delete</div></li>");
$videoModal.modal('hide');
$('.ck-message').hide();
});
$('[data-video-delete]').click(function(e) {
$('#' + $(this).data('video-delete')).remove();
});
.video-clickzone {
min-height: 150px;
border: 2px dashed #dddddd;
background: white;
padding: 20px 20px;
}
.video-clickzone:hover {
cursor: pointer;
}
.video-clickzone .ck-message {
text-align: center;
margin: 2em 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<div class="video-clickzone">
<div class="ck-message">
<div>
<i class="fa fa-video-camera fa-5x"></i>
</div>
Click to add video
</div>
<ul id="videoSortable" class="list-unstyled list-inline"></ul>
</div>
<div class="modal bs-example-modal-md" id="videoModal" tabindex="-1" role="dialog">
<div class="modal-dialog modal-md">
<div class="modal-content">
<div class="modal-header bg-primary">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Add video</h4>
</div>
<div class="modal-body">
<p>This is just an example, click on 'Add'</p>
<div class="form-group" id="video-form">
<label class="control-label" for="video-src">Video URL</label>
<input type="url" id="video-src" class="form-control">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" id="videoModalOK" data-actie="">Add</button>
</div>
</div>
</div>
</div>
ありがとうございました!それが問題を解決しました!あなたのコードに基づいて私はこれも削除リンクを使用できるようになることを思いついた。 $ {'video-clickzone'} on( "click"、 "img"、function(evt){ evt.stopPropagation(); evt.preventDefault(); }); $( '#' + $(this)).data( 'video-clickzone')。( 'click'、 '[data-video-delete]'、function(e){ $ (););););););););;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; – Timo002