why $ («# iframeID»). contentWindow.FunctionFromIFrameNode (); не работает?

0

$ ( "# IframeID") contentWindow.FunctionFromIFrameNode().

это ошибка, но она работает, когда определяет индекс элемента следующим образом

$ ( "# IframeID") [0].contentWindow.FunctionFromIFrameNode();

Может ли кто-нибудь объяснить внутреннее?

Теги:
iframe

1 ответ

0

Я предполагаю, что вы используете jQuery. $ - это фабричная функция, которая возвращает набор элементов DOM, которые соответствуют переданному ему селектору ($ можно вызывать другими способами). jQuery определяет очень полезные методы для этого возвращаемого объекта. contents() является одним из таких. Даже если только один элемент соответствует селектору в документе, $ still возвращает объект со значением свойства 0 ссылкой на выбранный элемент DOM.

Возвращенный объект jQuery выглядит так:

var returnedObject = {
  0: DOM element,
  1: DOM element,
  length: 2,
  selector: "Selector passed to $",
  context: 2nd argument passed to $ or Document object
}

Вы можете ссылаться на первый элемент DOM, например, с помощью метода returnedObject[0].

$('#iframeID') возвращает набор элементов DOM, который соответствует селектору. Возвращаемый набор представляет собой объект, подобный массиву, который имеет свойства индекса, такие как массивы (0, 1 ,....).

$("#iframeID").contentWindow.FunctionFromIFrameNode()

Это не сработает, потому что вы пытаетесь получить доступ к contentWindow, которое не определено в наборе элементов DOM, возвращаемых значением $.

$("#iframeID")[0].contentWindow.FunctionFromIFrameNode()

Это будет работать, потому что вы получаете доступ к первому элементу DOM в наборе элементов DOM, возвращаемых значением $. Этот элемент DOM имеет на contentWindow определенный contentWindow.

  • 0
    Спасибо за ваше объяснение. почему $ ("# iframeID") возвращает набор объектов, хотя в DOM есть только один элемент (с идентификатором "iframeID")? во-вторых, это правило применимо только для свойства contentWindow? если нет, то почему $ ("# iframeID"). contents (). find ("p"). html () работает без указания индекса? Пожалуйста, поделитесь своими мыслями.
  • 0
    @afin Я попытался уточнить свой ответ, добавив еще несколько деталей. $(#iframeID").contents().find("p").html() работает, потому что contents() является одним из многих методов, определенных в возвращенном объекте jQuery.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню