阴影 DOM 中的 JQuery 选择元素

Bal*_*lio 5 html javascript jquery dom

HTML代码:

<textarea name="remark" rows="4" cols="30">
  #shadow-root (user-agent)
  <div id="inner-editor">
    "this is text in textarea"
  </div>
</textarea>
Run Code Online (Sandbox Code Playgroud)

我正在尝试id="inner-editor"使用此 JQuery选择元素 DIV :

var el = $("[name='remark']").children();

但它var el是空的。如果我试试这个:

$("[name='remark']").text();

它也是空输出。

#shadow-root (user-agent) 类似于模板(我不知道它是什么)并且不显示在 textarea 中

是否可以在 textarea 元素中选择此元素 DIV?

小智 7

这有助于我在 Shadow root 中选择一个元素。我已将其转换为您的场景。

let textArea = $("textarea[name='remark']"); 
let sr = $(textArea)[0].shadowRoot; 
console.log($(sr).find('.#inner-editor'));
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助某人。


Tob*_*obi 5

我真的不得到你的榜样,但我猜你是隐藏<div id="inner-editor">在的影子根<textarea name="remark" rows="4" cols="30">

您需要选择 ,<textarea name="remark" rows="4" cols="30">然后您就可以通过shadowRootjavascript 属性访问元素的 Shadow Root 。

完整示例:

var el = $("[name='remark']").shadowRoot.getElementById("inner-editor");
Run Code Online (Sandbox Code Playgroud)

编辑: 使用 Jquery,根据您的问题,您需要将 shadowRoot 传递给 Jquery。它也应该与 Jquery 一起使用:

var sr = $("[name='remark']").shadowRoot;
var el = $(sr).find("#inner-editor");
Run Code Online (Sandbox Code Playgroud)

  • 对我来说 shadow root 属性返回 undefined (2认同)
  • 经过测试,我发现这样可以: var sr = $("[name='remark']")[0].shadowRoot; (2认同)

use*_*458 -2

复制你的 html 和 js 代码后它就可以工作了。请检查小提琴

确保包含 jquery.min.js

<textarea name="remark" rows="4" cols="30"> #shadow-root (user-agent) <div id="inner-editor"> "this is text in textarea" </div> </textarea>
alert($("[name='remark']").text());

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>      
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>

<script type='text/javascript'>
//<![CDATA[ 
$(window).load(function(){
alert($("[name='remark']").text());
});
//]]>      
</script>  

</head>
<body>
  <textarea name="remark" rows="4" cols="30"> #shadow-root (user-agent) <div id="inner-editor"> "this is text in textarea" </div> </textarea>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)