Prettyphoto - как передать уникальный параметр в функцию обратного вызова - PullRequest
2 голосов
/ 15 марта 2012

В любом случае в prettyphoto я могу передать параметр в функцию обратного вызова

Это моя текущая настройка

<link rel="stylesheet" href="/css/prettyPhoto.css" type="text/css" media="screen" charset="utf-8" />
<script src="/js/jquery.prettyPhoto2.js" type="text/javascript" charset="utf-8">

<script type="text/javascript" charset="utf-8">
  $(document).ready(function(){
    $("a[rel^='prettyPhoto']").prettyPhoto({
    callback: function()
    {           
    $.post('/course/close-video', {topic_id: '13'});
    }
    });
  });
</script>


<a href="/course/play-video/topic_id/<?php echo $topic->topic_id;?>?iframe=true&width=470&height=340" rel="prettyPhoto" title="<?php echo $topic->topic_name;?>">
<img src="/images/videos/" width="170" height="103" alt="topic_name;?>"/>
</a>

Примечание. Я жестко закодировал значение темы как 13 вобратный вызов - но это то, что должно прийти в зависимости от того, какая ссылка нажата.

На странице есть несколько тегов href, и у каждого есть уникальный topic_id

Так как я могупередать этот уникальный topic_id в функцию обратного вызова

Большое спасибо

1 Ответ

4 голосов
/ 15 марта 2012

Я проверил исходный код, и он не поддерживается Prettyphoto.Однако вы можете изменить источник prettyphoto.

В версии 1.3.4 (без сжатия) вы должны изменить функцию обратного вызова, чтобы ее поддержка передавала выбранный элемент в качестве аргумента.

Редактировать: Acullty Я не буду менять исходный код, в следующий раз, когда вам нужно обновить Prettyphoto, вы должны будете внести изменения снова.Это будет поддержка технического обслуживания.

Одним из решений может быть отслеживание ссылки и ее сохранение:

$(document).ready(function(){
    var lastClicked = null;
    $("a[rel^='prettyPhoto']").prettyPhoto({
    callback: function()
    {           
        if(lastClicked != null) {
                var topicid = lastClicked.data("topicid"); // lastClicked is your lastclicked link. So you can use whatever jQuery method on it..
                alert("topic: " + topicid); // The topic_id
                $.post('/course/close-video', {topic_id: '13'});
                lastClicked = null; // Set the last clicked to null 
        }
    }
    }).click(function (){
        lastClicked = $(this);
});

});

Я создал для вас jsfiddle, чтобы вы могли проверить: http://jsfiddle.net/26L8w/

Это не будет обрабатывать встроенную функцию «перейти к следующему», потому что она не будет отслеживать ее.Но вы можете включить jQuery, если хотите отслеживать это.

...