2015-03-02 6 views
0

Я немного над головой, понимая, почему это не работает и как это исправить.Как использовать функцию jQuery, сохраненную как значение в объекте?

У меня есть объект, созданный с использованием wp_localize_script() в другом файле, и я использую его для передачи значения в файл js.

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

jQuery(document).ready(function ($) { 

    if(wptjCustomInit.opt != "") { 

     wptjCustomInit.opt; 

     console.log(wptjCustomInit.opt); //outputs correct content: $('.table-juice').DataTable(); 

    }else{ 

    ...other code... 

Моя цель за содержание объекта, подлежащего обработке вместе с остальной частью сценария, как если бы это было в файле все вместе.

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

+0

Не уверен, что я его получу, wp_localize позволяет отправлять данные из PHP-сервера в интерфейс. Он делает это, вставляя скрипт с переменными и содержимым PHP, чтобы его можно было получить на клиентской стороне, и это довольно аккуратно, но как именно вы отправляете объект jQuery из PHP, где нет jQuery или javascript? – adeneo

+0

Я подозреваю, что 'wptjCustomInit.opt' содержит строку' $ ('. Table-juice') .... 'и не очень объект jQuery, и это было бы неправильным способом сделать это, если это селектор, который вам нужен вы должны просто передать это, а не целые строки jQuery? – adeneo

+0

Возможно, вы на правильном пути. Вы правильно относитесь к содержимому строки. wptjCustomInit - это массив, а «opt» - единственный ключ/значение в массиве. Вероятно, я неправильно назвал его объектом с точки зрения jQuery, но это то, что они назвали его в документах для wp_localize_script(). –

ответ

0

Если я правильно понял, то это может быть так просто, как просто добавить скобки имя метода:

wptjCustomInit.opt(); 

То есть стандартный способ вызова метода.

+0

Я только что протестировал это, и я получил эту ошибку в консоли: Uncaught TypeError: string не является функцией –

+0

Я думаю, что я изучаю из других комментариев, что у меня на самом деле нет объекта js, а строка. Мне нужно создать функцию, которая выполняет строку? –

0

Несмотря на то, что я отвечаю на свой вопрос, он приходит с помощью тех, кто прокомментировал этот вопрос.

Решение состоит в использовании функции javascript eval(). Как это:

eval(wptjCustomInit.opt); 

От W3Schools about eval():

The eval() function evaluates or executes an argument.

If the argument is an expression, eval() evaluates the expression. If the argument is one or more JavaScript statements, eval() executes the statements.

Я очень ценю помощь и время, потраченное помогает мне понять и решить эту проблему!

Смежные вопросы