2016-07-20 3 views
0

JavaScript 코드를 실행하고 싶습니다. 사용자가 AngularJS 응용 프로그램 내에서 특수 클래스가있는 요소를 클릭하면 간단한 alert() 함수가 실행됩니다. 나는 간단한 jQuery를 사용한다면, 나는 그런 식으로 할 것 :AngularJS : 특정 클래스가있는 div를 클릭하십시오.

$('.specialClass').on('click', function(){ 
    alert('hi'); 
}); 

이것은 내가 내 index.html에 포함했다 main.js 파일이 정확히 무엇이다. 심지어는 실제로 작동하는 코드가 여러 개 있습니다 ($(document).on('click',...). 그러나 $('.specialClass').on('click'... 부분이 작동하지 않습니다. 나도 실제로이 클래스를 구현하는 방법을 모르겠다 specialClass 다른보기, 컨트롤러, 지시문 등 모든 곳에서 발생할 수 있습니다 기본적으로 애플 리케이션에서 사방. 어떤 아이디어이 문제에 접근하는 방법?

답변

-2

는 매개 변수 참고로 클래스를 추가 & 문서에 대해 사용 http://api.jquery.com/on/

$(document).on('click', '.specialClass', function() { 
//your code here.. 
    }); 

편집을 다음 DownVoters하십시오.

이 각 방식이 아니라 모든 요소

+0

사람들이 당신을 투표하는 이유는 확실하지 않습니다. – mmvsbg

+0

@HarshadHirapara 예, "각도"가 아니지만 op는 이미 자신의 응용 프로그램에서 많은 장소에서이를 사용하고 있습니다. –

+0

예, 동의했지만 구체적인 AngularJS 솔루션을 요청하지 않았습니다. 난 그냥 어떻게 든 클릭을 처리하고 싶지만이 솔루션은 각도 방식이 아니더라도 사실 내 사건에 더 효과적 일 수 있습니다. – mmvsbg

3

angular.module('app', []).directive('clickable', function() { 
 
    return { 
 
    restrict: 'C', 
 
    link: function(scope, elem, attrs) { 
 
     elem.bind('click', function() { 
 
     scope.$apply(function() { 
 
      if ($(elem).is('div.clickable')) { 
 
      alert('matches div.clickable'); 
 
      } else { 
 
      alert('does NOT matche div.clickable'); 
 
      } 
 
     }); 
 
     }); 
 
    } 
 
    } 
 
});
.black { 
 
    color: black; 
 
} 
 
.blue { 
 
    color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="app"> 
 
    <div class="black clickable">clickable black div</div> 
 
    <div class="blue not-clickable">not clickable blue</div> 
 
    <p class="blue clickable">clickable blue p</p> 
 
</div>

당신이 순수한 각도 방법을 원하는 경우를 찾아 그 지시를 만드는 최소한의 변화의 영향과 함께 귀하의 경우에 작동합니다 클래스 정의를 통해 적용 할 수있는 지시문을 만들 수 있습니다. 지시문의 이름은 클릭을 추가하려는 클래스의 이름입니다.

위의 예를 참조하십시오.

편집 : 대답 언급하는 I'm targeting is actually a query looking something like that div .specialClass and I would only care for the clicks if it's within the div

JQuery와 그들이 주어진 선택 사항을 만족하는지 요소에 적용 할 수 .is(selector)라는 기능이 있습니다.

따라서 <div class="special"></div><elem>.is('div.special') 인 요소 인 경우 <elem>이 특수 클래스 인 div 인 경우이 함수는 true를 반환합니다.

+0

좋은 해결책이지만 타겟팅하는 클래스가 실제로 'div .specialClass'와 같은 것으로 보이는 쿼리 일 경우 div에있는 경우 클릭 수만 고려하면됩니까? 물론 다른 클래스를 추가하고 솔루션을 사용할 수는 있지만 문제는 앱이 이미 존재하므로 모든 코드를 수행하고 새 클래스를 추가해야한다는 것입니다. – mmvsbg

+1

@mmvsbg jquery의'.is (selector)'함수. 업데이트 된 답변을 참조하십시오. – Chanthu

관련 문제