2016-01-24 69 views
0

我使用這個:
如何找到id元素在Angualar的jqLit​​e元素對象

 
$vehicleTypeDropdown = element.find(".vehicleTypeDropdown"); 

然後在以後的時間點,我想找到#pselect ID元素。 我$vehicleTypeDropdown看起來像這樣這是jqLit​​e對象: -

<select class="vehicleTypeDropdown" id="vehicleType"> 
<option id="#pselect" value="">Please Select</option> 
<option ng-repeat="types in selectedType" value="Vt3" class="ng-scope ng-binding">vt3</option> 
<option ng-repeat="types in selectedType" value="Vt4" class="ng-scope ng-binding">vt4</option> 
</select> 

有兩個問題 -

  1. 這是寫在jqLit​​e文檔在.find()方法僅查找標籤,不適用於類或ID。所以,我怎麼

    $vehicleTypeDropdown = element.find(".vehicleTypeDropdown");

    與內容的jqLite對象?

  2. 我該如何找到#pselect的選項?我想要手動刪除它,請記住它可以按任何順序排列在選項中。

+0

難道你不能只將它們分配給一個var? 'var $ ps = $('#pselect');'和'var $ vtd = $('。vehicleTypeDropdown');' – zer00ne

+0

你能否解釋一下_爲什麼你需要這個?通常在使用angularjs時不需要手動DOM操作 – Grundy

+0

@ zer00ne,jqLit​​e,與jQuery不一樣 – Grundy

回答

0

如何通過ID在角的jqLit​​e元素對象找到元素

Id應該是頁面上唯一的,所以你可以用document.getElementById找到它,或者document.querySelector然後在jqLit​​e把它包元件。

var pselect = angular.element(document.getElementById('pselect')); 

這適用於:

<option id="pselect" value=""> 

,但如果你在HTML有:

<option id="#pselect" value=""> 

你應該使用:

var pselect = angular.element(document.getElementById('#pselect')); 

我只是想找到並動態刪除它,以便用戶無法看到選擇中的選項。

在這種情況下

你可以簡單的使用ng-if指令:

<select class="vehicleTypeDropdown" id="vehicleType"> 
    <option id="pselect" ng-if="condition" value="">Please Select</option> 
    <option ng-repeat="types in selectedType" value="Vt3" class="ng-scope ng-binding">vt3</option> 
    <option ng-repeat="types in selectedType" value="Vt4" class="ng-scope ng-binding">vt4</option> 
</select> 

如果DOM加入條件爲真,元素,如果沒有 - 沒有


如果此代碼的工作:

$vehicleTypeDropdown = element.find(".vehicleTypeDropdown"); 

a第二你得到合適的對象,然後在你的頁面還包括全jQuery的,因爲你可以在jqLit​​e來源看,find function簡單

find: function(element, selector) { 
    if (element.getElementsByTagName) { 
     return element.getElementsByTagName(selector); 
    } else { 
     return []; 
    } 
}, 
3

沒有像#id="pselect"

<select class="vehicleTypeDropdown" id="vehicleType"> 
    <option id="pselect" value="">Please Select</option> 
    <option ng-repeat="types in selectedType" value="Vt3" class="ng-scope ng-binding">vt3</option> 
    <option ng-repeat="types in selectedType" value="Vt4" class="ng-scope ng-binding">vt4</option> 
</select> 

捕捉元件使用的ID這

var elem = angular.element(document.querySelector('#pselect')) 
elem.remove() 

http://jsfiddle.net/vorant/4sbux96k/1/

+1

'document.getElementById('#pselect')'work ok:http://jsfiddle.net/4sbux96k/2/ – Grundy

+0

@Grundy [This Answer](http://stackoverflow.com/a/79022/5535245)recommended避免在id屬性中使用'#'。它的工作原理,但不建議。 – georgeawg

+0

@georgeawg,是的,我不是說這個最好,我只是提到'getElementById'這個工作:-) – Grundy