2015-11-14 4 views
0

Я пытаюсь выполнить JQuery на моей странице покупки. Однако JQuery не выполняется. Когда я использую один и тот же код в jsfiddle, код работает (я получаю предупреждающее сообщение, но когда я выполняю тот же jquery в shopify, я не получаю предупреждающего сообщения).Shopify - JQuery не исполняется

Вот ссылка на jsfiddle - https://jsfiddle.net/tusharacc/ck84ad6z/1/

код такой же, как я использую в Shopify.

Код HTML содержится в index.liquid. Javascript загружается в папку «Активы».

Theme.liquid имеет ссылку на мой файл javascript. Более того, тема имеет ссылку на lquery.min.js, и она включена в файл javascript.

{% include 'oldIE-js' %} 

{{ '//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js' | script_tag }} 
{{ 'modernizr.min.js' | asset_url | script_tag }} 

{{ 'readjson.js' | asset_url | script_tag }} 

Я проверил нижеследующий документ о покупке, но я не знаю, какие дополнительные вещи мне нужно сделать. https://docs.shopify.com/api/unlinked/using-javascript-responsibly

Любые указатели будут высоко оценены.

Отредактировано **

В соответствии с инструкцией Shopify я скопировал код ниже для загрузки выполнения JQuery. Тем не менее, код все еще не работает, когда я отлаживался, элемент управления goint до loadcript («// ajax ...) после того, как вы идете, что происходит. Я попробовал try-catch, чтобы отобразить ошибку, но я не получаю.

function loadjquery(){ 
alert("hi"); 
var loadScript = function(url, callback){ 

var script = document.createElement("script") 
script.type = "text/javascript"; 

if (script.readyState){ //IE 
    script.onreadystatechange = function(){ 
     if (script.readyState == "loaded" || 
       script.readyState == "complete"){ 
      script.onreadystatechange = null; 
      callback(); 
     } 
    }; 
} else { //Others 
    script.onload = function(){ 
     callback(); 
    }; 
} 

}; 
var myAppJavaScript = function($){ 
/* Your app's JavaScript here. 
    $ in this scope references the jQuery object we'll use. 
    Don't use 'jQuery', or 'jQuery191', here. Use the dollar sign 
    that was passed as argument.*/ 
$('body').append('<p>Your app is using jQuery version '+$.fn.jquery+'</p>'); 
}; 

if ((typeof jQuery === 'undefined') || (parseFloat(jQuery.fn.jquery) < 1.7)) { 
    loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function(){ 
    jQuery191 = jQuery.noConflict(true); 
    myAppJavaScript(jQuery191); 
    }); 
} else { 
    myAppJavaScript(jQuery); 
} 
} 
+0

Извините, но это далеко от отметки. Все, что вам нужно для части jQuery: ' 'Вам не нужны теги загрузчика или скрипта. – bknights

+0

@bknights, эта часть строки уже есть, но JQuery не выполняется. –

+0

У вас есть это на общедоступной странице Shopify? – bknights

ответ

0

Посмотрите на то, что они сказали:. Use jQuery responsibly

необходимо загрузить JQuery вручную

Попробуй jsfiddle.com сайта, чтобы выбрать No wrap - in <head> из рамочных & Расширения

По умолчанию используется onLoad

Вы должны загрузить библиотеку jQuery вручную.

+0

Спасибо за ваш ответ. Я новичок в веб-программировании, поэтому не могу это понять. Я думал, в том числе Jquery lib в голове достаточно. Сказав это, я выполнил инструкции, приведенные в коде, но я не могу назвать JQuery. –

+0

Добро пожаловать, попробуйте включить этот скрипт на свой сайт: Также вы можете скачать его и навсегда включить в него Ссылка на github: https : //gist.github.com/lulessa/a0f112dcb816bf1ccbd6 – wajeeh

+0

У меня только один вопрос (скорее всего, я чего-то не хватает). Код в ссылке похож на то, что у меня есть, за исключением того факта, что код сам выполняет анонимную функцию, так что он выполняется немедленно. Однако в моем случае код необходимо выполнить после выпадающего списка. Отсюда и различие. –

0

Стараюсь этот код с моим собственным:

 

-html- 
    -head- 
     -script src="../scripts/jquery-1.7.2.min.js">-/script- 
     -script type="text/javascript"> 
      function ready() { 
       $("#readcity").change(function() { 
        alert("hi"); 
        //start ajax request 
       }); 
      } 
     -/script> 
    -/head> 
    -body onload="ready()"> 
     -div> 
      -div class="grid__item one-half post-large--one-quarter" style="background-color:#e5f3ff;border-style:double;border-color:#002a66"> 
       -form method="post" style="margin:auto;" > 

        -label for="Destination City">Destination City-/label> 

        -select id="readcity"> 
         -option value="jamshedpur">Jamshedpur-/option> 
         -option value="ranchi">Ranchi-/option> 
        -/select> 
       -/form> 
      -/div> 
     -/div> 
    -/body> 
-/html> 

К сожалению, я не понимаю все ваши проблемы, и я не вижу свой код. Я надеюсь получить этот код.

0

jQuery включен во все страницы Shopify по умолчанию, вам не нужно включать файл еще раз.

Проверьте консоль, если загружен jQuery. Если он не загружен, вам необходимо включить файл.

Если он загружен, попробуйте использовать onchange="alert('hi')" в элементе, чтобы проверить, произошло ли вообще изменение. Если вы получите предупреждение, попробуйте связать элемент по $('.....').on("change",function(){alert('hi')} и проверьте. Если это работает, попробуйте зарегистрировать ошибку. Вы должны сразу выяснить, где проблема.