美好的一天,角與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
你爲什麼不寫css? '('#message-grid .panel')。children()。css({...});'等於'#message-grid .panel> * {...}'也在css – Alex
中,你是正確的,jQuery代碼在運行時執行一次,必須重新調用每次角度輸出改變標記(我猜),但事件委託是基於事件的,所以你必須在角回調上運行該代碼(不知道這些是否存在) – Alex
@Alex - children()。css({})只是爲了查看我是否可以應用樣式。一旦我解決了我的問題,我打算將其刪除。 – coson