2014-04-03 58 views
0

美好的一天,角與jQuery干擾找到

我有哪裏我試圖使用jQuery find()方法,以一些樣式應用於包含一個名爲gridfooter類div元素一旦頁面呈現JavaScript代碼。

這裏的電網頁腳的預渲染HTML:

<div ng-if="messages != null && messages.length > 0" class="gridfooter"> 
    <table class="list-footer"> 
    ... 
    </table> 
</div> 

這裏呈現的HTML:

<div ng-controller="gridController" id="message-grid" ng-show="visible" class="ng-scope"> 
    <div class="panel"> 
    <div class="gridheader" style="color: red; border: 1px solid red;">..</div> 
    <div class="gridcontent" style="color: red; border: 1px solid red;">..</div> 
    <div class="gridfooter">..</div> 
    </div> 
</div> 

下面是我用找到gridfooter JavaScript的:

var thePanel = $('#message-grid .panel'), 
    theFooter = thePanel.find(".gridfooter"), 
    theContent = thePanel.find(".gridcontent"), 
    theContentFooter = theContent.find(".gridfooter"); 

    $('#message-grid .panel').children().css({ "color" : "red", "border": "1px solid red" }); 

我的問題是與gridfooter類的div是不是像gridheader/gridcontent樣式。

然而,當我刪除角NG-如果從預渲染HTML指令:

<div class="gridfooter"> 
    <table class="list-footer"> 
    ... 
    </table> 
</div> 

然後用gridfooter呈現DIV的樣式

<div ng-controller="gridController" id="message-grid" ng-show="visible" class="ng-scope"> 
    <div class="panel"> 
     <div class="gridheader" style="color: red; border: 1px solid red;">..</div> 
     <div class="gridcontent" style="color: red; border: 1px solid red;">..</div> 
     <div class="gridfooter" style="color: red; border: 1px solid red;">..</div> 
    </div> 
</div> 

我認爲,之所以出現這種不工作是因爲:jQuery not working with ng-repeat。這個問題的答案涉及事件代表團。

我會正確地認爲ng-if處理程序在運行時綁定,因此.gridfooter不存在嗎?

如果是這樣,我不是100%確定如何解決這個問題。

有什麼建議嗎?

TIA,

COSON

+0

你爲什麼不寫css? '('#message-grid .panel')。children()。css({...});'等於'#message-grid .panel> * {...}'也在css – Alex

+0

中,你是正確的,jQuery代碼在運行時執行一次,必須重新調用每次角度輸出改變標記(我猜),但事件委託是基於事件的,所以你必須在角回調上運行該代碼(不知道這些是否存在) – Alex

+0

@Alex - children()。css({})只是爲了查看我是否可以應用樣式。一旦我解決了我的問題,我打算將其刪除。 – coson

回答

2

您應該使用ng-class將樣式應用到元素。除了指令外,使用JQuery並行的Angular JS代碼並不是一個好的實踐。

ngClass

的ngClass指令允許你通過數據綁定表示所有的類被添加 表達式動態地設置一個 HTML元素CSS類。

您可以評估任何表達式,然後將該類應用於元素。