2012-03-15 5 views
2

Есть в любом случае в prettyphoto для меня, чтобы передать параметр в функцию обратного вызова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> 

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

Есть несколько из этих A HREF тегов на странице, и каждый из них имеет уникальный topic_id

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

Спасибо большого

+0

Не могли бы вы просто не использовать ** это ** и получить какое-либо значение, если это зависит от ссылки? –

+0

Привет, Саймон, не совсем уверен, что вы имели в виду, но когда я добавляю атрибут id к тегу привязки и пытаюсь получить к нему доступ в обратном вызове, как предупреждение ($ (this) .attr ('id')); Я получаю undefined – Gublooo

ответ

4

У меня есть проверил исходный код и не поддерживал 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/

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

+0

Спасибо Саймон, как бы я это сделал. – Gublooo

+0

Я обновил свой ответ –

+1

wow thats довольно аккуратное решение и работает как шарм. Большое спасибо за ваше время. Ценить это – Gublooo

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