Witam!

Proszę o pomoc w dość pilnej sprawie.
Mam div'a i ładuję do niego zawartość skryptem java o wdzięcznej nazwie Ezjax (czyli Ajax oparty na jQuery).
( http://www.milaju.com/post/simple-ajax-con...nger-with-ezjax )

Wszystkie linki wewnątrz załadowanej zawartości, jeśli przypisze się do nich klasę "ezjax" lub ustawi odpowiednią opcję, ładują zawartość wewnątrz okna Ajax'owego. Mam jednak ogromny problem z linkami przypisanymi do tagu <area>, a bardzo ich potrzebuję :/ Po kliknięciu ich, nowa zawartość ładuje się w głównym oknie przeglądarki...

Nie jestem znawcą JavaScript'u, ani jQuery, więc sam nie jestem w stanie odpowiednio zmodyfikować skryptu. Proszę o pomoc smile.gif

Tak wygląda kod pliku jquery.ezjax.js
[JAVASCRIPT] pobierz, plaintext
  1. /*
  2.  *
  3.  * jQuery EZJax v. 1.0.1
  4.  *
  5.  *
  6.  */
  7.  
  8. jQuery.fn.ezjax = function(o) {
  9.  
  10. obj = jQuery(this).attr('class');
  11.  
  12. // Defaults
  13. var o = jQuery.extend( {
  14. container: '#ezjax_content',
  15. initial: null,
  16. effect: null,
  17. speed: 'normal',
  18. easing: null,
  19. bind: '.'+obj
  20. },o);
  21.  
  22. // Load initial
  23. if(o.initial!=null){
  24. jQuery(o.container).load(o.initial,function(){
  25. bind();
  26. });
  27. }
  28.  
  29. // Re-bind for any links internal to the content
  30. function bind(){
  31. jQuery(o.container+' '+o.bind).ezjax({
  32. container: o.container,
  33. initial: null,
  34. effect: o.effect,
  35. speed: o.speed,
  36. easing: o.easing
  37. });
  38. }
  39.  
  40. // Main functionality
  41. return this.each(function() {
  42.  
  43. jQuery(this).click(function(){
  44. var url = jQuery(this).attr('href');
  45.  
  46. // Check for transition effect
  47.  
  48. if (o.effect != null) {
  49.  
  50. // Run effect
  51. switch(o.effect){
  52.  
  53. // Slide
  54. case 'slide':
  55. jQuery(o.container).animate({height:"0px"}, o.speed, function(){
  56. jQuery(o.container).css('overflow','hidden'); // Fix glitchies
  57. jQuery(o.container).load(url, function(){
  58. jQuery(o.container).animate({
  59. height: jQuery(o.container).children().height() + 20
  60. },o.speed,o.easing,function(){
  61. jQuery(o.container).css('overflow','visible'); // Undo glitchy fix
  62. });
  63. bind();
  64. });
  65. });
  66. break;
  67.  
  68. // Fade
  69. case 'fade':
  70. jQuery(o.container).animate({ opacity: 0.0 }, o.speed, function(){
  71. jQuery(o.container).load(url, function(){
  72. jQuery(o.container).animate({ opacity: 1.0 }, o.speed);
  73. bind();
  74. });
  75. });
  76. break;
  77. }
  78. }
  79. else {
  80. // Standard load (no effect)
  81. jQuery(o.container).load(url,function(){
  82. bind();
  83. });
  84. }
  85. // Keeps the href from firing
  86. return false;
  87. });
  88. });
  89.  
  90. };
[JAVASCRIPT] pobierz, plaintext


A tak krótki fragment w sekcji <head> pliku strony:
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $('.ezjax').ezjax({
  3. container: '#BOX_FLATS_CONTAINER',
  4. initial: 'body_flats_viewer.php?type=general',
  5. effect: 'fade',
  6. easing: 'easeOutQuart',
  7. bind: 'a'
  8. });
  9. });
[JAVASCRIPT] pobierz, plaintext


Dodam, że pozmianie paramteru 'bind' (we fragmencie kodu z sekcji <head> strony) na 'area', link również nie działa poprawnie.


---


Po testach sprawa wygląda tak - w normalnych warunkach wszystko działa sprawnie (na testowym demo), jednak w stronie, którą robię do tagów <map><area> przypisany jest skrypt JavaScript, który dodaje efekt podświetlenia po najechaniu myszą, a w praktyce tworzy element <canvas> nad całym obrazkiem, dlatego kliknięcie <area> nie działa tak, jak powinno normalnie.

Wszystkie skrypty tworzące efekt podświetlenia elementów <area> działają podobnie, więc tego nie obejdę. Mogę jednak spróbować zmienić powyższy kod jquery.ezjax.js tak, aby każdy link w div'ie Ajaxa ładowany był wewnątrz tego div'a. I teraz o to właśnie proszę smile.gif

Dzięki!