HTML
<li class="feed">
<a data-uid="15" data-fid="23" href="http://domain">
<img src="imageurl.com" class="favicon">
<span>Website Title</span>
<span class="options">delete</span>
</a>
</li>
JQuery
$(document).on('click', '.col-l .feed a', function(e){
e.preventDefault();
//do something
});
$('.options').click(function(){
var fid = $(this).parent().attr('data-fid');
var uid = $(this).parent().attr('data-uid');
console.log(fid);
console.log(uid);
});
Всякий раз, когда я нажимаю delete
запускается jQuery .on
а также .options
. Есть ли способ, который, если .options
, будет игнорировать .on()
?
Я попробовал $(document).on('click', '.col-l.feed a:not(.options)', function(e){
но без успеха
Конечно, вам просто нужно остановить .options
от распространения дерева DOM. Например (вам также нужно добавить preventDefault
к событию):
$(document).on('click', '.col-l .feed a', function(e){
e.preventDefault();
//do something
});
$('.options').click(function(e){
e.stopPropagation();
e.preventDefault();
var fid = $(this).parent().attr('data-fid');
var uid = $(this).parent().attr('data-uid');
console.log(fid);
console.log(uid);
});
Здесь jsFiddle demo