2015-12-15 56 views
0

我有一個jQuery代碼:jQuery的點擊()方法轉換成角

$('.class i').click(function() { 
    $(this).parent().find('input').click(); 
}); 

當點擊<i>元素它增加了點擊的方法來兄弟元素。

<div class="class"> 
    <input> 
    <i> 
</div> 

使用Angular的語法是什麼?

我現在擁有的是:

<div class="class"> 
    <input> 
    <i ng-click="onMyClickFunction($event)"> 
</div> 
onMyClickFunction = function(event){ 
    angular.element(event.target).parent().find('input').click(); 
} 

我採用了棱角分明的jqLit​​e。但是Angular的jqLit​​e沒有click()方法。這種click()方法是一種原生JavaScript,不支持跨瀏覽器,另外在移動設備上不受支持。

+0

也許你想使用| 。angular.element( '#myselector')觸發器( '點擊'); –

回答

1

另一種選擇是不這樣做使用JavaScript。只需使用默認瀏覽器行爲,當您點擊輸入標籤時,就會選擇輸入。你可以用兩種不同的方法做到這一點:

簡單地包裹在輸入和圖標標籤

<label class="class"> 
    <input> 
    <i> 
</label> 

或者你可以使用for屬性

<div class="class"> 
    <input id="{{ $id }}"> 
    <label for="{{ $id }}"><i></label> 
</div> 
+1

我想這是問題的最佳解決方案。感謝您考慮這一點。 – Blix

0

使用trigger('click')代替:

onMyClickFunction = function(event){ 
    angular.element(event.target).parent().find('input').trigger('click'); 
} 
+0

downvoter,關注評論 – Vivek

+1

downvoters永遠不會做。懦夫。 無論如何感謝您的努力。我向你投票贊成你的改變。 – Blix

0

寫指令,

app.directive('clickThis', function() { 
    return { 
     restrict: 'A', 
     link: function(scope, element) { 

     element.bind('click', function(e) { 
      angular.element(e.target).clickThis('.class').find('input').trigger('click'); 
     }); 
     } 
    }; 
}); 

而你的html會是,

<div class="class"> 
    <input> 
    <i clickThis> 
</div> 

clickThis是指令。

如果您可以提供該輸入的ID,選擇會變得更簡單。如果可行,那就是!