2010-12-28 1 views
3

настоящее время у меня что-то вроде этого:Использование `` Not` с Delegate` - Jquery

$(".jtable tbody td").not(".DeleteLicense").hover(

Как я могу использовать делегат с этим? Что-то вроде

$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td.... 

Спасибо!

ответ

3

Вы можете использовать :not() selector, чтобы переместить отрицание в свой селектор.

$("#resultContainer,#approvalContainer,#createNewContainer") 
    .delegate(".jtable tbody td:not(.DeleteLicense)", "...", ...); 

Обратите внимание, что документация Jquery рекомендует использовать .not() функции, а не :not() селектор в большинстве случаев, но я не уверен, если это возможно, в этом случае.

Если вы готовы использовать другой подход, вы можете обнаружить, что вы можете использовать селектор .jtable tbody td в вызове к delegate, а затем использовать if(!$(this).is(".DeleteLicense")) { ... } в обработчике событий только элементы процесса, которые отвечают вашим критериям.

+0

отличный пример того, как использовать не селектор, не знал, что. – kralco626

+0

есть ли преимущество использования последнего по сравнению с прежним методом? – kralco626

+0

По-моему, использование селектора ': not()' делает код более понятным и понятным. Однако я не знаю, каковы последствия для любого подхода. Использование '.is' в обработчике событий усложняет ситуацию, потому что ваш селектор говорит одно, а ваш код делает другое. –

0

Моя первая мысль была бы попробовать и использовать :not() selector:

$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td:not('.DeleteLicense')", "hover", function(){ /* do stuff */}); 
2

Как это:

$("#resultContainer,#approvalContainer,#createNewContainer").delegate(".jtable tbody td:not('.DeleteLicense')", "hover", function(eventObj) { 
    // handler code 
}); 
Смежные вопросы