jQuery:通过没有ID的标签名称标记(选择)内容文本

Posted

技术标签:

【中文标题】jQuery:通过没有ID的标签名称标记(选择)内容文本【英文标题】:jQuery: Mark (select) content text by tag name without ID 【发布时间】:2014-09-28 05:28:41 【问题描述】:

我想通过单击来选择某些标签中的内容文本,例如code(准备复制粘贴)。

当你有 ID 时我找到了解决方案,但我的代码标签没有 ID:

<p>When I click <code>this code</code> I want it to be selected.</p>
<p>The code tags don't have IDs or tag names.</p>
<p>Here's some <code>other code</code>.</p>

这不起作用:

$("code").click(function()
    $(this).select();
);

似乎select() 仅适用于输入和文本区域。

测试:http://jsfiddle.net/n6R3t/

【问题讨论】:

【参考方案1】:

正如您所说,$.select() 方法仅适用于输入/文本区域。您需要结合使用 window.getSelection 和 document.selection(在旧版浏览器中)。

$("code").click(function()
    if (document.selection) 
        // older browsers
        var range = document.body.createTextRange();
        range.moveToElementText(this);
        range.select();
     else if (window.getSelection) 
        // modern browsers
        var range = document.createRange();
        range.selectNode(this);
        window.getSelection().addRange(range);
    
);

见小提琴:http://jsfiddle.net/derekaug/8Ax79/

【讨论】:

【参考方案2】:

试试这个由 Jason Edelman 在this answer 分享的 jQuery 插件:

jQuery.fn.selectText = function()
    var doc = document
        , element = this[0]
        , range, selection
    ;
    if (doc.body.createTextRange) 
        range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
     else if (window.getSelection) 
        selection = window.getSelection();        
        range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    
;

你可以这样使用它:

$('code').click(function() 
    $(this).selectText();
);

【讨论】:

【参考方案3】:

.select() 触发选择事件。它是 javascript .trigger("select") http://api.jquery.com/select/ 的简写,因此您需要在代码中添加一个事件处理程序,以便它执行任何操作,类似于您已经拥有的点击处理程序。

$("code").select(function()your code for what happens on select);

在您的 click 代码之后添加它,它应该会响应。

【讨论】:

以上是关于jQuery:通过没有ID的标签名称标记(选择)内容文本的主要内容,如果未能解决你的问题,请参考以下文章

jQuery基础--样式篇

JQuery查找标签

JQuery中的选择器

JQuery第二章选择器

jQuery怎样获取并且修改P标签内的值

jQuery怎样获取并且修改P标签内的值