0

我正在尝试使用 jQuery.attr()属性来获取 iframe具有明确定义高度的 img 的高度。

jQuery

var scrollerHeight = $('.caroufredsel_wrapper > ul > li').find('img','iframe').attr('height');

HTML

<div class="caroufredsel_wrapper">
<ul>
    <li><iframe src="movie.swf" width="750" height="422"></iframe></li>
</ul>
</div>

正如现在所写的那样,我将“未定义”作为一个值。关于如何解决这个问题的任何想法?

JSFiddle在这里:http: //jsfiddle.net/LmMTL/1/

4

6 回答 6

6

你应该只提供一个参数给.find()-> 选择器'img, iframe'

var scrollerHeight = $('.caroufredsel_wrapper > ul > li').find('img, iframe').attr('height');

http://jsfiddle.net/LmMTL/2/

于 2012-04-06T16:51:14.490 回答
5

这是错误的:

.find('img','iframe')

find()不接受任何额外参数。我想你的意思是:

.find('img, iframe')
于 2012-04-06T16:52:28.863 回答
0

find() 方法使用 Selector 上下文,因此它将第二个参数视为备用上下文。备用上下文通常用于将选择器定向到不同的 DOM。

更改您的查找选择器以在第一个参数中使用多个元素将起作用。

高度 = $('.caroufredsel_wrapper > ul > li').find('img, iframe').attr('height');

我还建议使用第一个过滤器/方法来确保你只得到一个结果:

$('.caroufredsel_wrapper > ul > li').find('iframe, img').first().attr('height');

在这里查看我的测试要点:https ://gist.github.com/2321394

于 2012-04-06T17:08:30.427 回答
0

你总是可以给 iframe 一个 id attr。我在您的 jsFiddle 上对其进行了测试,结果为 422。

于 2012-04-06T16:54:32.577 回答
0

为什么不为框架设置一个 id 并直接访问它。

var scrollerHeight = $('#mframe').attr('height');

http://jsfiddle.net/LmMTL/7/

于 2012-04-06T16:56:22.093 回答
0

这个是错的

    .find('img','iframe')

试试这个

   $(document).ready(function() {


  var scrollerHeight = $('.caroufredsel_wrapper > ul > li').find('iframe').attr('height');
  alert(scrollerHeight);

 });
于 2012-04-06T18:17:56.920 回答