2017-04-06 5 views
0

異なる動作を持っている私TDとはそう番目の私は、このセレクタjqueryの異なるセレクターは、私は、TDがクリックされたとき、それはその目、その上に直接で見つけ、私はのためのクラスを持っていなかった前に、それは</p> <p>幅だ変化する機能を持っている

var selectedTh = $this.closest('table').find('th').eq($this.index()); 

を使用していたし、それが必要として、それは完全に働いたと幅を変更しました。

今、私はそれをリファクタリングしたいので、私は(各列の特定のクラス)TDと番目のクラスを持っている - 私はこのセレクタ

var selectedTh = $('th',$(this).attr('class')); 

を使用してみましたし、私はそれをデバッグしていたとき、私は私が をしたいが、私は

var tableWidth = $('table').width(); 
       var colWidth = tableWidth/$('th', $table).length; 
       selectedTh.addClass("fullWidth"); 
       selectedTh.animate({ 
        width: colWidth + 100 
        }, 150); 

を行う際の後、それはちょうど私が目でないことによってそれを探していたクラスを明確にするためには何も

しません番目の選択されたかなり確信して私が追加している全幅は、前に設定されたクラスです。

私はそれが正しく

私はクラスによって正しい番目の要素を選択するセレクタを使用することができますどのように任意のアイデアを、それを変更して、以前のセレクタを使用していましたか?

+1

これを試してみてくださいvar selectedTh = $( 'th'、 '。' + $(this)).attr( 'class')); 'あなたがいない' .'クラスの表現 – prasanth

+4

**本当に**あなたのHTMLなしであなたを助けるのは難しいです。 –

+0

[mcve] – mplungjan

答えて

2

$(this).attr("class")要素の完全なclass属性が返されます:

  1. がそれに複数のクラスを持つことがし
  2. はありません.を示すことはありませんクラスセレクタだから、

です彼らは同じことをしません。さらに、thの中での中で、thistdの場合は意味をなさない要素を探します。

あなたはおそらく、あなたが持っているものとオフ最高だが、あなたはtdだけ一つのクラスを持っていることをtdth保証する共通クラスを追加する場合は、colspans心配または類似している場合、あなたが行うことができます:

おそらく
var selectedTh = $this.closest('table').find('th.' + $this.attr("class")); 

以上、tddata-th-class属性を追加して実行します。

var selectedTh = $this.closest('table').find('th.' + $this.attr("data-th-class")); 

... tdに他のクラスを追加することができます。

+1

を作成するには '<>'をクリックしてください。私はあなたが提供した2番目のオプションを使用して問題を解決しました –

関連する問題