2016-07-27 35 views
3

datepickerカレンダーのボタンをクリックすると、trという親要素が見つかりました。私はAngularアプリケーションでスクリプトタグ(編集)の形式でjQuery を使用したくないので、厳密にCSSを使用することはできませんので、以下の指示文を作成しました。 elm.findは、ボタンのCSSを正しく見つけて変更することができるので、私が探している要素が見つかったことがわかりましたが、今はDOMを移動する必要があります。Angularディレクティブの親要素を取得

私はjQueryの構文には慣れていますが、これはうまくいかず、インターウェブ上で有効なものは何も見つかりませんでした。誰かが文法で私を助けてくれるの?

/* Linker for the directive */ 
    var linker = function (scope, elm, attrs) {     
     elm.on('click', function() { 
      elm.find('table tbody tr button.active').parent('td').css('background-color', 'red'); 
     }); 
    }; 

EDIT

これは、全体の行の背景色を変える変えるためにuib-datepicker要素(角UIブートストラップ)に配置する必要がある命令です。フレームワークにはこの機能が付属しておらず、ページが読み込まれるまでHTMLは生成されません。

ディレクティブを下の要素に添付して、選択した項目を見つけてDOMをバックアップして、親を探すためにtrを見つける必要があります。

<uib-datepicker highlightselectedrow class="well well-sm" ></uib-datepicker> 
+1

を取得するまで、私はあなたの代わりに(「TD」)親 'の.closest''使うべきだと思う親に検索 'OR ng-'使用するのではと思われます.closestを使用すると言うだろうもし可能ならばクラス。 –

+0

@ PankajParkar .closestが機能しました。あなたが答えとして追加したいなら、私はそれを受け入れるでしょう。 – NealR

+0

はい、私は、ありがとう;) –

答えて

4

.parentは正確にはelementとなります。私はむしろ、それはそれはtd

elm.find('table tbody tr button.active') 
.closest('td').css('background-color', 'red'); 
+0

どうしたらうまくいきましたか? '.find(...)'が実際には動作しないように見えるので、[私は試しましたが、私にとってはうまくいかなかった](http://plnkr.co/edit/iXuspSkKCtQi9TbE0tWJ?p=preview)私のレプロ。違いは?あなたは完全なデモであなたの答えを広げることができますか? – Jeroen

+0

@Jeroenこれは基本的に私が持っているものです。 datepickerが使用する 'button'要素を含むように修正しなければなりません:' elm.find( 'table tbody tr button.active')。nearest( 'tr')。find( 'button')。addClass( '選択されたレポートウィーク ') ' – NealR

+0

奇妙な。私は[関連する文書](https://docs.angularjs.org/api/ng/function/angular.element#angular-)から知ることができるので、うまくいきました。 s-jqlite) '.closest'と' .find'の両方とも '.active'セレクタはjQliteで動作するはずです... – Jeroen

0

擬似jQueryよりも角度的なアプローチはありますか?これは、ngStyle Angular docに基づいています:あなたは、あなたが(TD)を好きな要素にclickイベントを置きます

<div ng-style="myStyle">Test</div> 
<div ng-click="myStyle={'background-color':'red'}">Click Me</div> 

ng-styleは、影響を受けるもの(tr)に移動できます。

+0

この説明が投稿に追加されました。なぜこれがうまくいかないのですか? – NealR

関連する問題