2014-03-07 192 views
0

我一直在網上尋找答案几個小時,找不到任何東西,所以我希望有人能幫助我。找到班級的高度,並適用於其他班級

我想要一個包裝類div的高度爲movie,並將其應用於內部div,其班級爲movie-center。我如何使用JS或jQuery來做到這一點?我是一個新手,當談到JS,所以我會非常感謝,如果你可以爲我一切(包括任何需要的HTML)。

謝謝!

編輯1:也許如果我解釋我在做什麼,人們會有更好的理解。我正在製作一個響應式WordPress主題。由於瀏覽器的寬度較小,電影寬度較小。我希望疊加標題和圖形留在中心。我試着用CSS做這件事,除非我知道確切的高度(我不會因爲調整大小),否則它不能完全完成。

編輯2:這裏是瀏覽器的HTML渲染代碼:

<article id="movie-97" class="post-97 movie type-movie status-publish hentry"><a href="http://localhost:8888/movies/hard-truth-levity-hope"> 

<div class="movie-center"> 

    <div class="movie-overlay"> 

     <div class="movie-play"></div> 

     <h2 class="movie-title">Hard Truth, Levity and Hope</h2> 

    </div> <!-- end .movie-overlay --> 

</div> <!-- end .movie-center --> 

<div class="movie-thumb"><img width="480" height="270" src="http://localhost:8888/wp-content/uploads/2014/03/truth-levity-hope.jpg" class="attachment-movie-thumb wp-post-image" alt="Hard Truth, Levity and Hope" /></div> 

編輯3:Here's a Pastebin for my website。注意:它已被剝離,只顯示網站的重要部分。

+1

你可以發佈你的html代碼嗎? – Sam

+2

爲什麼用JS?這可以用CSS做得更好 –

+0

@emilioicai他可能有不同的元素與'電影'類在很多頁面上都有不同的高度,並且想要用電影中心動態設置元素的高度'班。我同意,雖然有更簡單的方法來做到這一點。 – ntzm

回答

0

請試試這個:

/* Get height of .movie thumb preview */ 
       jQuery(document).ready(function($) { 
        $('.movie').each(function() { 
        var h = $(this).height(); 
        console.log(h); 
        $(this).find('.movie-center').first().css('height',h); 
         console.log($(this).find('.movie-center').first().height()) 
        }); 
       }); 
+0

都不工作我。我用更多的信息更新了我的問題。 – Connor

+0

這是我的網站的一個pastebin:http://pastebin.com/DVX104A0 – Connor

+0

請檢查上面的代碼。我認爲它應該工作。 – yantrakaar

1

你做了什麼是正確的做法。請確保你正確加載jQuery和嘗試包DOM準備處理$(document).ready(function() {...});或較短的形式$(function() {...});

$(function() { 
    $('.movie').each(function() { 
     var h = $(this).height(); 
     $(this).find('.movie-center').height(h); 
    }); 
}); 

編輯裏面的代碼:由於您使用WordPress的,有可能在這裏發生衝突發生,嘗試使用方法:

jQuery(document).ready(function($) { 
    $('window').resize(function() { 
     $('.movie').each(function() { 
      var h = $(this).height(); 
      $(this).find('.movie-center').height(h); 
     }); 
    }).resize(); 
}); 
+0

我不確定你的意思是「將你的代碼包裝在DOM中......」我複製/粘貼了你的代碼,並且由於某種原因它不工作 – Connor

+0

檢查我的更新:) – Felix

+0

這實際上正在返回一個值,但不是正確的。它的高度是18px。不知道爲什麼。 「未改變的高度」是270px(調整前的高度)。所以它應該說270px。 – Connor

0

康納,

這將讓你,你找什麼:

jQuery(document).ready(function($) { 
    $('.movie').each(function() { 
    var h = $(this).height(); 
    $(this).find('.movie-center').height(h); 
    }); 
}); 

快速說明。你會注意到jQuery的.height()函數被調用了兩次。首先,沒有任何參數,然後通過h

拉起你的JS控制檯(cmd+opt+j,如果你使用的是Chrome),看看它是如何實際工作的。

這個頁面頂部的問題有一個#question-header的ID,所以如果你在控制檯$('#question-header').height()中輸入這個值,你會看到它返回36.這是因爲那個元素是36像素高。

因此,不帶任何參數調用.height將返回所選元素的高度。但是,我們可以通過傳入一個數字來設置高度。通過對JS控制檯粘貼此試試這個:現在

$('#question-header').height(1000)

標題是高度大於1000像素!

代碼的第三行基本上說,「咦,.movie文章this特定實例中,找到.movie-center元素,並將高度。

所以,你去那裏。有些工作代碼和希望的解釋究竟爲什麼/如何在將來使用它

+0

你們爲什麼要將高度保存到僅使用一次的變量,但未包裝'this'使用兩次? 這應該是: '$('。movie')。each(function(){0}這個$(this);這個 $ this.find('。movie-center')。height($ this .high()); });' –

+0

Brian,感謝您的解釋,但您的代碼不工作:( – Connor

+0

@MaciejPyszyński足夠公平的,這將工作得很好。 )'比'.height($ this.height())';'更具可讀性,但這僅僅是個人偏好 – brianrhea