2013-03-18 2 views
2

Wordpress에서 페이지로 추가 할 때 jquery 코드가 작동하지 않는 이유를 알아 내려고 몇 시간 동안 노력했습니다.jQuery 클릭 이벤트가 Wordpress 페이지에서 작동하지 않습니다.

독립 실행 형 페이지로 모든 것이 잘 작동하지만 Wordpress 페이지로 변환하면 jQuery 클릭 이벤트가 더 이상 발생하지 않습니다.

내 jQuery 코드는 현재 다음과 같습니다

내 버튼을 HTML에서 다음과 같습니다
jQuery(document).ready(function() { 
    jQuery('button#convert').click(function() { 
     alert("test"); 
     var text = jQuery('textarea#textInput').val(); 
     var method = jQuery('select#methodOptions').val(); 

     if (text!='') 
     { 
      $.ajax({ 
       url: 'core/convert.php', 
       type: 'POST', 
       data: 'data=' + text + '&method='+ method, 
       dataType: 'html', 
       success: function(message) { 
        jQuery('textarea#textOutput').val(message); 
       } 
      }); 
     } 
    }); 
}); 

또한
<button id="convert" class="convertbutton" type="button">Convert</button> 

내가 위의 스크립트를 포함하는의 .js 파일이 제대로로드되었는지 확인할 수 있습니다 헤더에 jquery 라이브러리도있다. 내가 놓친 게 있니? 미리 감사드립니다.

편집 : 문제가 무엇인지 발견했습니다. Wordpress는 jquery 라이브러리를 바닥 글에로드하여 머리글에 .js를로드했는데, 이는 호출하기 전에 라이브러리를로드해야하기 때문에 문제가 발생한 이유였습니다. 명백한 이유로 스크립트.

또한 $ .ajax는 noConflict 모드에서 jQuery.ajax 여야합니다.

+0

은 이벤트가 실행될 때 발생하는 오류입니다 (콘솔 확인). – CodePB

+0

오류 : ReferenceError : jQuery가 정의되지 않았습니다. 소스 파일 : .../scripts/functions.js 줄 : 1. jquery가 noConflict에 있습니다. noConflict에 대해 위의 코드가 isnt 인 경우 $와 동일한 오류가 발생합니다. 이것은 헤더의 js 코드입니다. coolmine

+0

콘솔 알림 pburgess를 보내 주셔서 감사합니다. – coolmine

답변

4

문제는 코드의 다음 정직하고 덜 뭔가 오류로 나타났다. Wordpress 플러그인 중 하나는 대다수의 .js 파일을 로딩 시간을 개선하기 위해 머리글 대신 바닥 글에로드하는 것이 었습니다.

문제는 jquery 라이브러리가로드되어 오류가 발생하기 전에 내 javascript 코드가 실행되게하는 헤더에 .js 파일을로드하는 것이 문제였습니다.

내 .js 파일이 바닥 글에로드되었는지 확인하기위한 해결책으로 add_action('wp_head', '<js method>');add_action('wp_footer', '<js method>');으로 변경하여 해결할 수 있습니다. 또한 코드에는 작은 오류가 있습니다. jquery가 고발 모드가 아닌 경우 $.ajaxjQuery.ajax이어야합니다.

+0

이것이 내 문제의 해결책이었습니다. wp_enqueue_script ('frontend', plugins_url ('/ js/frontend.js', __FILE__), 배열 ('jquery') 및 add_action ('wp_enqueue_scripts'...)을 통해 내 Wordpress 플러그인에서 자바 스크립트를로드하는 중 ... 내 자바 스크립트 wp_enque를 사용 했음에도 불구하고 jQuery를로드하려면 첫 번째 코드 단편을 wp_enqueue_script ('frontend', plugins_url ('/ js/frontend.js', __FILE__), array ('jquery'), false, true)로 바꾸십시오. 마지막 'true'플래그는 내 스크립트를 마지막으로로드합니다. http://codex.wordpress.org/Function_Reference/wp_enqueue_script – possiblyLethal

0

시도 :

if (text != 'undefined') 

또는

if (text != null) 

는 AJAX의 예를 들어 here 참조하십시오.

편집 :

가 클릭 기능에서 선택하기 전에 '버튼'을 꺼내. (# convert, not button # convert) 또한 체크 아웃 .find

HTML 본문에 jquery를 포함해야합니다. 가능한 경우 바이올린을 포함하십시오.

나는 또한 Jquery()와 함께 과거에 문제가있었습니다. 다음과 같이 코드를 작성합니다 :

$(document).ready(function(){ 
// etc etc 
$('#convert').click(//etcetc 

+0

슬프게도 경고가 나타나지 않으므로 문제가 해당 줄 앞에 발생합니다. – coolmine

+0

@coolmine 업데이트 된 답변 확인 – greycode

+0

문제가 아니며 문제가 무엇인지 나와 함께 업데이트됩니다. – coolmine

관련 문제