2012-04-09 7 views
0

メソッド()の後にjquery のメソッドを使用すると、次のようなhtmlがあります。これはうまく動作しますが、特定の条件(トップTDに追加のクラスが存在する)の下でafter()メソッドを適用したくない状況があり、正しいjqueryセレクタ構文を見つけようとしています。この変更を行うための最良のjqueryセレクタは何ですか?

開始するには、これをより具体的にするために、私は次のようなHTMLがあります。

<td class="fc-widget-content"> 
<div> 
     <div class="fc-day-number">1</div> 
     <div class="fc-day-content"> 
    </div> 
    </td> 

を、私は次のロジックをしたい:私はこのHTMLを貼りたい:

 <span class="addEventHidden" style="display: none;"> 
      <img src="/Content/Images/addEvent.gif"> 
     </span> 

右後fc-day-number div。私はこれを行うことにより、容易にこれを行うことができます。

$('.fc-day-number').after(function() { 
    return "<span class='addEventHidden' style='display: none;'><img src='/Content/Images/addEvent.gif'></span>"; 
}); 

トップdiv要素は、この余分なクラスを持っている場合、いくつかのケースでは、私は.after()メソッドを実行したくないを除いて、これは素晴らしい作品:FC-その他 - 月

トップがこのように見える場合ので、これはコマンドの後に適用されます。

<td class="fc-widget-content fc-other-month"> 
:トップTDは次のように見える場合

<td class="fc-widget-content"> 

ではなく、

答えて

2

試してみてください。

$('td.fc-widget-content:not(.fc-other-month) div.fc-day-number') 
    .after('<span class="addEventHidden" ... >'); 

例では、わかりやすくするために改行しています。 <span class="addEventHidden" ... >をlegit htmlに置き換えます。

0
$('.fc-widget-content .fc-day-number').not('.fc-other-month .fc-day-number').after(function() { 
    return "<span class='addEventHidden' style='display: none;'><img src='/Content/Imags/addEvent.gif'></span>"; 
}); 
+0

'fc-other-month'は親のクラスです。 –

+0

fc-other-monthは、fc-day-numberと同じレベルのクラスではなく、その上にあるTDのクラスです。 。私はいくつかの構文がそれを説明する必要があると仮定します – leora

-2
$(".fc-widget-content:not(.fc-other-month):parent(.fc-day-number) .fc-day-number"); 
+0

これは 'div'ではなく' td'を対象とします。 –

+0

[':parent'](http://api.jquery.com/parent-selector/)はそのようには動作しません。私はあなたが ':parent'または':has(.fc-day-number) 'を意味すると思います。いずれにせよ、それらは必要ありません.fc-widget-content:not(.fc-other-month).fc-day-number'を実行してください。 –

-2

あなたは正しい親とdivs Sを得るだけに.filterを使用することができます。

$('.fc-day-number').filter(function(){ 
    return $(this).closest('.fc-other-month').length === 0; 
}).after(function() { 
    return "<span class='addEventHidden' style='display: none;'><img src='/Content/Images/addEvent.gif'></span>"; 
}); 

それともdivを選択するために、より具体的なセレクタを使用することができます。

$('.fc-widget-content:not(.fc-other-month) .fc-day-number').after(function() { 
    return "<span class='addEventHidden' style='display: none;'><img src='/Content/Images/addEvent.gif'></span>"; 
}); 

P.S. </td>の前に</div>を忘れてしまった。

+0

私は投票しませんでしたが、 – Mathletics

+0

@Mathletics:第1回は単なる提案であり、最高のアイデアだとは決して言わなかったし、引用符を修正した。 :-P –

関連する問題