2016-07-05 2 views
1

Вот мой столDocument.execCommand не работают, как я ожидал

<table> 
    <tr> 
    <th>Name</th> 
    <td>Paul Johnson</td> 
    <th>Street</th> 
    <td>Fake Street</td> 
    </tr> 
    <tr> 
    <th>State</th> 
    <td>California</td> 
    <th>Car</th> 
    <td>Cadillac</td> 
    </tr> 
</table> 

Мой сценарий выполняется MouseEnter событие:

$('th').on("mouseenter mouseleave", function(e) {if (e.type === 'mouseenter') { 

}); 

Внутри его этой панели, которая имеет внутри объекта связи

toolbar = $("<div />").css({ 
    "padding": "5px", 
    "background" : "#F8F8F8", 
    "borderRadius" : "5px 0 5px 5px" 
    }); 

    var link = $("<a />").css({ 
    "display" : "block", 
    "height" : "20px", 
    "width" : "20px", 
    "marginBottom" : "5px", 
    "background-size" : "100%", 
    "position" : "relative"}) 
    .attr({"target" : "_blank"}); 

Моя переменная thisNext делает это, чтобы получить текст следующего элемента td

var thisNext = $($(this).next()).text(); 

Вопрос Почему мой вар копия не копировать thisNext значение altrough console.log работ, как я ожидал?

Редактировать: Цель, если вы нажмете «скопировать» объект, добавленный для примера на th Name, чтобы попасть в буфер обмена Paul Johnson. Если на улице, то скопируйте Fake street и так далее.

var copy = link.clone().on("click", function (e) { 
    e.preventDefault(); 
    console.log ("thisNext "); 
    thisNext.execCommand('copy'); 
} 
+0

Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. –

+0

Извините, отредактирован. Надеюсь, теперь это ясно. –

+0

Не знаете, где вы добавляете ссылку на свою таблицу? –

ответ

1

Working Pen

Проблема приходят от линии:

thisNext.execCommand('copy'); 

copy команды копирования всегда выбор, поэтому мы должны выбрать содержание тд первого затем выполнить свой комментарий и, наконец, сбросить выбор:

var copy = link.clone().on("click", function (e) { 
    e.preventDefault(); 

    var td = e.target.parentNode.parentNode; 

    do { 
     td = td.nextSibling; 
    } while(td && td.nodeType !== 1); // 1 == Node.ELEMENT_NODE 

    var range = document.createRange(); 

    range.selectNode(td); 

    window.getSelection().addRange(range); 

    document.execCommand('copy'); 

    // Remove the selections - NOTE: Should use 
    // removeRange(range) when it is supported 
    window.getSelection().removeAllRanges(); 
}) 

ПРИМЕЧАНИЕ: вы можете проверить, поддерживает ли ваш браузер команду копирования с помощью This link.

Надеюсь, это поможет.

+0

Большое спасибо –

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