2017-01-16 2 views
0

기본적인 질문이 있지만 아직 만족할만한 대답을 찾지 못했습니다. 나는 행동의 개념을 이해하지 못했다. 내가 이해 한 것은 jQuery(document).ready처럼 더 유연하다는 것이다. 왜냐하면 그것은 여러 번 해고 될 수 있기 때문이다. (예를 들어 ajax 새로 고침). 그러나 항상 aspected로 작동하지는 않습니다. 특히 jQuery 파일을 여러 개 사용하는 것이 좋습니다.드루팔 (Drupal 7 곱하기 js 파일을 사용하는 jQuery 동작

구체적인 문제 : js 파일을 drupal 사이트에 연결했습니다. 양식에 첨부 일부는 모듈에서 drupal_add_js를 통해 연결된 일부는, 일부는 모든 JS 파일은 다음과 같을 등 사용자 정의 블록에 부착 :

(function ($) { 
    Drupal.behaviors.THEMENAME = { 
    attach: function(context, settings){ 
      /* CODE */ 
     } 
    }; 
}(jQuery)); 

모든 것이 하나 개의 js 파일을 제외하고 작동 (안 특정 페이지에 않습니다 대부분 작동하지만 노드 페이지는 아닙니다.

하지만 어떻게 행동 이름을 지을 지 잘 모르겠습니다. 그들은 모두 같은 이름을 갖거나 다른 이름을 가져야합니까? 이름 (THEMENAME)을 변경하고 고유 한 이름 (예 : 해당 모듈)을 제공하면 대부분의 j는 더 이상 작동하지 않지만 특정 페이지에서만 작동하는 것은 이제 모든 페이지에서 작동합니다.

어떻게해야합니까? 서로 다른 j는 종속성이 없으며, 주로 토글, 쇼, 숨기기 및 CSS 조작이 간단합니다.

답변

0

동작은 JavaScript 개체입니다. 모든 행동의 이름을 동일하게하면 동일한 객체를 반복하여 무시하고 마지막으로로드 한 비헤이비어 만 실행됩니다. 각기 다른 행동에 대해 고유 한 이름을 찾아야합니다. 이름은 무엇이든 될 수 있습니다. 내 추천은 그들 모두에 당신의 주제 나 모듈 이름을 접두사로 붙인 다음, 그들이하는 일을 가장 잘 묘사하는 짧은 이름을 사용하는 것입니다.

+0

하지만이 작업을 수행하면 이전에 제대로 작동하지 않은 js 파일 중 아무 것도 작동하지 않습니다. 설명이 뭐야? 이제 더 이상 작동하지 않는 파일은 대부분 을 통해 맞춤 블록에 포함됩니다. $ block [ 'content'] = array ('#attached'=> array ('js'=> array ('FILE.js',),),);););); 또는 양식을 통해 $ 양식 [ '첨부'] [ 'js'] [] = 배열 ​​('유형'=> '파일', '데이터'=> FILE.js ',);' – Mika

+0

또 다른 js 스크립트로 인해 오류가 발생했습니다 (https://www.drupal.org/node/1181562 참조). 도움을 주셔서 감사합니다. 이제 모든 것이 잘 작동합니다! – Mika