【问题标题】:Find a particular tag in a div for which there is no id在没有 id 的 div 中查找特定标签
【发布时间】:2014-08-05 14:16:34
【问题描述】:

我正在使用 jquery 并试图找到嵌入在 <object> 中的 <html> 标记。我正在尝试使用 find 方法,但找不到。谁能指导一下。

代码:

if (dialogObject.find('head')) {
                        var findelemnt = $('#dialogObject').find('html');
                        var testthis = findelemnt.attr("class");
                        alert(testthis);
                    }
                    else { alert("not found") }

dialoObject 是一个 <div> 。附上页面截图。

【问题讨论】:

  • 我们需要查看更多代码来帮助您。你能创建一个jsfiddle吗?例如,使用您提供的代码,我们无法判断 dialDiv 或 dialogObject 是如何定义的以及它们包含什么。
  • 只是想知道,您为什么使用<object> 标签而不是 iframe?顺便说一句,我认为<object> 标签在 IE 中不起作用。
  • @MattBrowne : <object> 在 IE 中工作。至少对于这段代码它是有效的。如果我使用 那么我不会面临这个问题吗?
  • @MattBrowne :已将我的代码更改为 <iFrames> ,但这没有帮助。

标签: jquery html jquery-ui


【解决方案1】:

我认为这可能由于same origin policy 而失败。见https://stackoverflow.com/a/14453363/560114

尝试使用本地 URL - 我猜您可以使用以下代码让它在那里工作:

$('#dialogObject')[0].contentDocument

【讨论】:

  • 我收到 objectHTMLdocument 警报。代码:var findelemnt = $('#dialogObject')[0].contentDocument;
  • 有趣。我刚刚发现,例如<object id="myId" name="myName" ...></object>, window.myId.contentDocument === window.myName.document.
  • 无论如何,如果它是像 jquery.com 这样的远程 URL,我认为您将无法访问其内容。
【解决方案2】:

$('#dialogObject').find('head') - 你已经通过正确的选择器调用了你的元素。

【讨论】:

  • OP 可能已经这样做了。据我们所知,var dialogObject = $('#dialogObject')。此外,这无关紧要,因为我们使用的是find(),而不是children()filter()
  • @enenalan :我已经编辑了我的代码。我仍然收到未定义的 int 警报;而 标签有一个类属性。
  • @Wynand:没有帮助。在警告框中未定义。
【解决方案3】:

如果您尝试嵌入 嵌套 浏览上下文,则可以添加“名称”属性:

<object id="dialogObject" data="http://domain/path" name="myWindow"></object>

并使用myWindow.document.documentElementwindow["myWindow"].document.documentElement 访问嵌套的&lt;html&gt; 元素。

编辑 1:虽然您可以通过其“id”属性访问 &lt;object&gt; 元素,例如window.dialogObjectwindow["dialogObject"] 或者当然是document.getElementById("dialogObject"),您可以通过其“名称”属性访问嵌套 window 对象,例如myWindowwindow["myWindow"]

为此,$(myWindow.document.documentElement) 等同于使用$(myWindow.document).find('html')

编辑 2:如果您确实更喜欢按照原始代码使用“id”属性,您可以将 Matt Browneanswer 与上述内容结合起来以实现以下目标:

$($('#dialogObject')[0].contentDocument).find('html')

虽然我会建议以下内容:

$(document.getElementById("dialogObject").contentDocument.documentElement)

除此之外,不要忘记在文档就绪事件处理程序中执行您的代码,以确保在您尝试访问任何有问题的元素时 DOM 已完全加载。

【讨论】:

  • @Waynand:请您详细说明一下。如何使用 myObject 访问 html 元素?
  • 我认为他的意思可能是document.myObject,如果我没记错的话应该给你name是“myObject”的元素。
  • 我可以访问该对象。因为我有 ID。嵌入其中的内容是我无法访问的内容..
  • 好点...所以等同于@Wynand 的答案是$('#dialogObject')[0].document.documentElement...不确定这是否真的有效。
  • @MattBrowne :已将其放入警报中,警报甚至不返回任何弹出窗口。
猜你喜欢
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多