2016-04-26 2 views
1

Я хочу переключить метод preventDefault на основе имени класса элемента ссылки.Toggle event.preventDefault на основе имени класса

Пример:

<a href="#" class="myLink disabled">My link</a> 

//TO-DO: enable click only when link doesn't have disabled class 
$('.myLink').on('click', function() { 
    //DO SOME STUFF 
}); 
+0

_ "переключения preventdefault" _? Какие ? – Rayon

+0

'$ ('. MyLink'). On ('click', function (e) { e.preventDefault(); });' ...? – Rayon

ответ

3

Вы можете связать событие на элемент, которые не имеют определенного класса. С помощью селектора :not() можно исключить элементы.

$('.myLink:not(.disabled)').on('click', function 

Если disabled класса применяются динамически, вы должны проверить, если щелкнуть ссылку иметь этот класс, используя hasClass().

$('.myLink').on('click', function(event) { 
    if ($(this).hasClass('disabled')) { 
     event.preventDefault(); 

     // return false; // Use when no action should be performed 
    } else { 
     // Handle event 
     ... 
    } 
}); 
+0

- это 'return false === event.preventDefault();'? –

+0

@AndrewEvt 'return false; === e.preventDefault(); + e.stopPropagation(); ' – Tushar

+0

@Tushar, will' return false; 'предотвращать пузыряние события с привязкой события' on'? Просто сомневаюсь! – Rayon

1

Попробуйте это:

$(".myLink:not(.disabled)").on('click', function() { 
    //DO SOME STUFF 
}); 
1
<a href="#" class="myLink disabled">My link</a> 

//TO-DO: enable click only when link doesn't have disabled class 
$('.myLink').on('click', function(e) { 
    if ($(this).hasClass('disabled') { 
     e.preventDefault(); 
    } 
    // do thomething 
});