2016-06-08 1 views
1

Я использую DataTables Выберите расширение, чтобы выбрать несколько строк. В this jsfiddle example он работает, за исключением того факта, что строки также выбираются при нажатии гиперссылки. Я хочу, чтобы гиперссылки не выбирались из строк. Как я могу это сделать?DataTables исключает гиперссылки из выбора строк

Это мой DataTables Выбор инициализации:

$('#example').DataTable({ 
    select: { 
     style: 'multi', 
     selector: 'tr:not(a)' 
    } 
    }); 

ответ

1

Просто запретите выполнение другими слушателями stopImmediatePropagation();

$('a.do-nothing').on('click', function(e){ 
    e.stopImmediatePropagation(); 
}); 

обновленной скрипка ->https://jsfiddle.net/9hhaofky/2/

preventDefault() как вы используете только предотвратить поведение по умолчанию, например, предотвратить флажок из списка проверяемых.

+0

Спасибо вам большое! Следующий вопрос: как отключить поведение по умолчанию? В [этом примере] (https://jsfiddle.net/9hhaofky/3/) ссылки все еще работают (открытие на новой странице). Просто добавив 'e.preventDefault()' или уложив его в 'e.stopImmediatePropagation()', не работает. – Bob

+0

@Bob - 'return false' -> https://jsfiddle.net/9hhaofky/5/ -> [return false из обработчика события jQuery фактически совпадает с вызовом e.preventDefault и e.stopPropagation для пройденного ] (http://stackoverflow.com/a/1357151/1407478) – davidkonrad

+0

Еще раз спасибо! :) Как это работает в этой ситуации: https://jsfiddle.net/9hhaofky/6/? Кажется, я не могу найти ответ на этот вопрос. :( – Bob

1

Я думаю, что-то вроде:

$('a.do-nothing').on('click', function(e){ 
    e.stopPropagation(); 
}); 

будет делать трюк;)

PS .: Я тестировал в jsfiddle, так вы можете использовать другой идентификатор для a.do-nothing в своем проекте.

+0

Спасибо! Как и в другом ответе от davidkonrad, у меня есть следующий вопрос: как отключить поведение по умолчанию? В [этом примере] (https://jsfiddle.net/9hhaofky/3/) ссылки все еще работают (открытие на новой странице). Просто добавив 'e.preventDefault()' или уложив его в 'e.stopImmediatePropagation()', не работает. – Bob