Запустите jquery без функции щелчка - PullRequest
2 голосов
/ 20 сентября 2009

Я использую expose в одной ссылке, с этим кодом, и он работает:

$(document).ready(function() {
  var triggers = $("a[rel]").overlay({
    expose: {
      color: '#212121',
      loadSpeed: 200,
      opacity: 0.9
    },
    closeOnClick: false
  });
});

Ссылка:

<div id="triggers"><a href="" rel="#pop_member">Click here</a></div>

Но я хочу запустить код, напечатанный в php, поэтому я изменяю его на:

$(document).ready(function() {
  function run_expire(){
    var triggers = $("#pop_member").overlay({
      expose: {
        color: '#212121',
        loadSpeed: 200,
        opacity: 0.9
      },
      closeOnClick: false
    });
  }
});

и распечатайте в php:

echo '<script type="text/JavaScript">run_expire();</script>';

но это не работает.

Ответы [ 3 ]

4 голосов
/ 20 сентября 2009

Проблема в том, что функция run_expire определяется только внутри функции document.ready(), поэтому код в теге сценария не может ее найти.

Здесь нет необходимости использовать $(document).ready(). Лучшее решение было бы просто так:

function run_expire(){
  var triggers = $("#pop_member").overlay({
    expose: {
        color: '#212121',
        loadSpeed: 200,
        opacity: 0.9
    },
    closeOnClick: false
  });
}

Возможно, вы захотите убедиться, что документ готов перед запуском run_expire, что вы можете сделать так:

echo '<script type="text/JavaScript">$(run_expire);</script>';

Редактировать

Оглядываясь назад на ваш код, вы обнаружите еще одну проблему. $("#pop_member") не выберет ссылку, определенную следующим образом:

<a href="" rel="#pop_member">

Если вы хотите, чтобы селектор работал, вам нужно сделать следующее:

<a href="" id="pop_member">

Однако это может быть не то, что вам нужно, потому что вы можете иметь только один элемент на странице с таким же атрибутом id. Атрибут rel здесь тоже не совсем подходит. Вы, вероятно, хотите определить его с помощью класса, например:

<a href="" class="pop_member">

с этим селектором:

$(".pop_member")

В качестве альтернативы, если вы действительно хотите выбрать ссылку так, как она написана, вы можете использовать этот селектор:

$("a[rel='#pop_member']")

Редактировать 3

Ваша настоящая проблема была изложена в этом вопросе , заключающемся в том, что библиотека инструментов jQuery не использовалась должным образом. Вам нужно передать api: true в функцию наложения и вызвать .load() для возвращаемого значения функции наложения, чтобы наложение отображалось программно при загрузке страницы.

1 голос
/ 20 сентября 2009

Это потому, что ваша функция run_expire определена в области действия обработчика событий $ (document) .ready.

Вы можете определить свою функцию снаружи:

function run_expire(){
    var triggers = $("#pop_member").overlay({
        expose: {
            color: '#212121',
          loadSpeed: 200,
          opacity: 0.9
        },
        closeOnClick: false
    });
}

$(document).ready(function() {
    run_expire();
});

Тоопределит run_expire в глобальной области видимости, и ваш сгенерированный php скрипт будет работать.

1 голос
/ 20 сентября 2009

попробуйте это:

echo '<script type="text/JavaScript">$(function () { run_expire(); });</script>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...