2011-01-11 14 views
0

WordPressのループで条件を作成しようとしています。ない画像が、画像ボックス(.thumbHome {表示:なし})場合ループ内に画像がない場合はDivを非表示

これは私のfunction.phpに

function getThumbImages($postId) { 
$iPostID = get_the_ID(); 
$arrImages =& get_children('post_type=attachment&post_mime_type=image&post_parent=' . $iPostID); 
if($arrImages) { 
    $arrKeys = array_keys($arrImages); 
    $iNum = $arrKeys[0]; 
    $sThumbUrl = wp_get_attachment_thumb_url($iNum, $something); 
    $sImgString = '<img src="' . $sThumbUrl . '" alt="thumb Image" title="thumb Image" />'; 
echo $sImgString;} 
else { 
echo '<script language="javascript">noImage()</script>'; 
} 
} 

私のジャバスクリプトではない:

window.onload = noImage(); 
function noImage(){ 
document.getElementByClassName('.thumbHome').css.display = 'none'; 
} 

私が試み:

window.onload = noImage(); 
function noImage(){ 
$('.thumbHome').addClass('hide'); 
} 

結果:すべてのループにクラスが追加されました

私はまだコーディングで新しいので、別の方法でそれを描くことはできません。すべてのまあ最初

THX

+0

実際に画像があれば、ループが完了した後でボックスを非表示にすることができます。すでにすべての情報がサーバーサイドにあるので、それを利用することもできます。もちろん、JavaScriptを使っている人は写真が見えませんが、それは彼らの問題です。 –

答えて

1

、あなたはwindow.onload上でこれらの関数を呼び出す必要はありません。それはすぐにすべてのクラスのインスタンス.thumbHomeを条件なしで非表示に設定します。

ここでは、この問題を解決する簡単な方法を紹介します。おそらくもっと複雑な方法がありますが、これはうまくいきます。

メインループには、画像IDに基づいて各.thumbHome divに一意のIDを追加します。だから、のような:

echo '<div class="thumbHome" id="thumb-' . $iNum . '"> ... </div>'; 
// or you could you use the post ID, doesn't matter, as long as you are consistent 

その後(サムネイルがあるのか​​どうかのために)あなたの他の条件に変更することができます

else { 
    echo '<script type="text/javascript">noImage("#thumb-' . $iNum . '")</script>'; 
} 

とあなたのjs関数は次のようになります。

function noImage(var){ 
    $(var).hide(); 
} 

これではありません必要なのはこれを行うための最良の方法ですが、それはあなたが現在自分で見つけたシチュエーションを使った最良の方法です。

+0

まだ空のボックスが表示されています。ここにスクリーンショットがあります。 http://dl.dropbox.com/u/2527203/Screen%20shot%202011-01-14%20at%2014%20January%202011%3E%3E10.36.47%20AM.png – user571830

関連する問題