2012-04-06 133 views
0

我試圖使用jQuery .attr()屬性來獲取iframe的高度 img與明確定義的高度。jQuery attr();與iframe?

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/

+0

什麼樣的價值觀是它給你? – RyanS 2012-04-06 16:45:43

+0

嘗試使用螢火蟲進行檢查,看看目前的屬性是什麼,可以在其他地方改變它們 – RyanS 2012-04-06 16:49:37

+0

似乎可以正常使用img標記,但是iframe給了我'undefined' – colindunn 2012-04-06 16:50:59

回答

6

你應該只提供一個參數.find() - >選擇'img, iframe'

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

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

+0

這是OP在他的代碼中完全相同的代碼題。 – 2012-04-06 16:51:51

+1

@ElliotBonneville號碼'img'和'iframe'之間的引號被刪除。 – 2012-04-06 16:52:32

+0

糟糕,你是對的。非常小的變化,在滾動上下時很難看清楚。 :) @tarmaq:我取消了我的downvote,但是您應該指定下次更改的內容以防止混淆。 :p – 2012-04-06 16:53:30

5

這是錯誤的:

.find('img','iframe') 

find()不接受任何額外的參數。我認爲你的意思是:

.find('img, iframe') 
+0

這兩個片段完全相同 – Starx 2012-04-06 16:53:53

+0

@Starx:不,引號改變了。 :p – 2012-04-06 16:54:26

+0

@Starx不,它不是 - 在OP中只有一個字符串參數傳遞給'$ .find()'而不是兩個。 – Bojangles 2012-04-06 16:54:27

0

你總是可以給iframe一個id屬性。我在你的jsFiddle上測試了這個結果,並得到了422。

0

爲什麼不設置一個id到框架直接訪問它。

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

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

+0

這將工作,但我正在與一個CMS和iframe會改變。 – colindunn 2012-04-06 16:58:55

+0

你應該使用find('img,iframe'),因爲find只接受一個參數.find(selector); – 2012-04-06 17:03:35

0

這一發現()方法使用選擇器上下文中,所以它是治療所述第二參數作爲備用上下文。備用上下文通常用於將選擇器指向不同的DOM。

更改您的查找選擇器以在第一個參數中使用多個元素將起作用。 ('img,iframe')。attr('height');('。')。

我還建議使用第一濾波器/方法,以確保您只拿回一個結果:( 'caroufredsel_wrapper> ul>禮 ')。

$找到(' iframe中,IMG')第() .attr( '高度');

看到這裏我的測試要點:https://gist.github.com/2321394

0

這個人是錯誤的

.find('img','iframe') 

試試這個

$(document).ready(function() { 


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

});