显示焦点div仅书签

时间:2010-03-30 21:26:28

标签: javascript jquery html bookmarklet

我正在搜索从div中选择一个文本,然后单击一个书签,删除除了选中文本的div之外的所有html部分

也许jquery可以提供类似的帮助:

javascript:var%20s=document.createElement('script');s.setAttribute('src',%20'http://jquery.com/src/jquery-latest.js');document.body.appendChild(s);s.onload=function(){/*the code*/};void(s);

2 个答案:

答案 0 :(得分:2)

假设您选择的文字在页面上只出现一次,这应该有效。如果它出现多次,则应显示页面上包含所选文本的最后一个div。

更具可读性

function sel() {
    if (window.getSelection) {
        return window.getSelection().toString();
    } else if (document.getSelection) {
        return document.getSelection();
    } else if (document.selection) {
        return document.selection.createRange().text;
    }
}
var s = document.createElement('script');
s.setAttribute('src', 'http://jquery.com/src/jquery-latest.js');
document.body.appendChild(s);
s.onload = function () {
    var x = $(":contains('" + sel() + "')").last().parents("div").eq(0);
    $("body").empty().append(x);
};
void(s);

作为单行

javascript:function sel(){if(window.getSelection) return window.getSelection().toString();else if(document.getSelection) return document.getSelection();else if(document.selection) return document.selection.createRange().text;} var s=document.createElement('script');s.setAttribute('src','http://jquery.com/src/jquery-latest.js');document.body.appendChild(s);s.onload=function(){var x=$(":contains('"+sel()+"')").last().parents("div").eq(0);$("body").empty().append(x);};void(s);

如果您还希望css样式消失,则必须清空<head>

答案 1 :(得分:0)

如果我理解你,你正好看着这样的事情。

html

<body>
  <div class="bookmarklet">
    bookmarklet Text
  </div>
  <div>
    <div>
     <div class="bookmarklet">
      bookmarklet Text
     </div>
     <div>Usless</div>
     <div>Usless</div>
    </div>
    <div>Usless</div>
  </div>
  <script>
    $('bookmarklet').unbind('click').bind('click',function(){
      var text = $(this).text();
      $('body').html('').append(text);
    })
  </script>
</body>

如果你不知道如何在下面发表评论,如果你已经将jquery的脚本标记放在标题上,那么现在这将有效。