2015-07-09 3 views
1

Я использую команду JQuery найти в следующих jfiddle: https://jsfiddle.net/esend7881/3uu0tpv1/2/Internet Explorer копирует скрытые элементы таблицы

А именно, я использую:

$(document).ready(function() { 
    $('table#safe-distances-table').dblclick(function() { 
     $('tr.no-impact').toggle('slow'); 
    }); 
}); 

Чтобы вызвать некоторые строки в HTML-таблицы для переключения когда таблица дважды нажата. JQuery работает отлично, но моя настоящая проблема заключается в копировании и вставке из Internet Explorer.

Я ограничен использованием Internet Explorer в некоторых условиях и Я ожидаю, что когда строки будут скрыты, и я скопирую и вставлю таблицу из I.E. для Outlook скрытые строки не будут поставляться вместе с ним. Вместо этого они!

Вы можете попробовать в JFiddle с Internet Explorer. После двойного щелчка по таблице попробуйте скопировать и вставить полную таблицу в Outlook, и вы увидите все строки!

+0

Это копирование HTML, а не рендеринг. – Barmar

+0

Microsoft, в своей бесконечной мудрости, фактически [копирует _multiple_ вещи] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms649013 (v = vs.85) .aspx) в буфер обмена, когда вы копируете - как правило, он имеет как HTML, так и окончательный визуализированный текст _both_ в буфере обмена. Как он знает, что нужно _paste? _ В MS-Word он настраивается и изменяется, но в целом 'Ctrl + V' (сейчас) вставляет с форматированием ... но попробуйте' Shift + Ctrl + V' для [вставить без форматирования] (http://www.howtogeek.com/186723/ask-htg-how-can-i-paste-text-without-the-formatting/). –

+0

Дело в том, что я действительно хочу форматировать - но только форматирование видимого выхода! Могу ли я получить лучшее из обоих миров здесь? –

ответ

3

Untested in IE - это должно работать в теории.

Вам нужно будет указать remove() скрытые строки перед их копированием. Это заставляет строки вернуться с двойным щелчком немного затруднительно - вам нужно будет отслеживать исходные данные перед их удалением.

This fiddle seems to do the trick. Сохраняет исходный HTML-код и находится ли он в состоянии «переключено» с использованием $.data.

$('table#safe-distances-table').dblclick(function() { 
    var $el = $(this); 
    if($el.data('toggled')){ 
     $el.html($el.data('all')); 
     var $rowsToHide = $('tr.no-impact'); 
     $rowsToHide.hide(); 
     $rowsToHide.toggle('slow'); 
     $el.data('toggled',false); 
    } else { 
     var $rowsToHide = $('tr.no-impact'); 
     $el.data('all', $el.html()); 
     $rowsToHide.toggle('slow', function(){ 
      $rowsToHide.remove(); 
     }); 
     $el.data('toggled',true); 
    } 
}); 
+0

В jquery есть ли обработчик событий для функции copy-paste? Возможно, это когда я могу сделать функцию .remove()? –

+0

На самом деле вам не о чем беспокоиться. Оно работает! –

+0

Существует - '$ (el) .on ('copy', function() {...});'. Но я не понимаю, почему вы беспокоитесь - вышеприведенный фрагмент должен сделать трюк. Когда элементы будут скрыты ('display: none;'), вы можете удалить их (в этом случае. Могут быть другие случаи, когда вы хотите сохранить элементы в DOM, просто не увидите их - я не Не думаю, что это один из них.) _Edit - рад, что он работает: o) _ –

Смежные вопросы