0

このページには、タブとして並べ替えられたポートフォリオアイテムがたくさんあります。サイトへのリンク。このサイトはJoomla2.5で構築されており、各ポートフォリオアイテムの表示を処理するコンポーネントがあります。私がする必要があるのは、ページをリロードせずに、それぞれのポートフォリオアイテムをロードすることです。つまり、基本的にここにAJAX呼び出しを持つjavascript関数があります

function ajax_portfolio($pid) {
var url = 'index.php?option=com_jms_portfolio&task=item.ajax_load_portfolio&tmpl=component&id=' + $pid;
alert(url);
var x = new Request({
    url: url, 
    method: 'post',
    evalScripts: true,
    evalResponse: true,  
    onSuccess: function(responseText){
        document.getElementById('ja-content-main').innerHTML = responseText;
        aaa();
    }

    }).send();}

実際の問題は、AJAX呼び出しの原因やタグのクリックイベントではなく、このイベントに問題はありません。問題は、各ajax呼び出しの後にjavascript関数aaaa()を起動することです。はっきりしていなかった場合は申し訳ありませんが、問題は各ajax呼び出しの後に関数aaa()を起動することです。この関数は、各ポートフォリオアイテムのスライダーを作成します。

4

1 に答える 1

3

画像をラップするタグの既存のhref属性を削除します。<a>次に、unqiue IDを指定した後、clickjavascriptを介してハンドラーを各タグに追加します。<a>これにより、新しいページにリダイレクトする代わりに、画像をクリックしたときにajaxが呼び出されます。

aaa関数の呼び出しに関しては、メソッドを投稿していないため、問題はスコープにあると思います。正しいスコープを与えるためにaaa、これを達成するためにajax_portfolioに追加のパラメーターを渡すことができます。

JQueryの例を次に示します。

<a port_id="56"><img>...</img></a>

$(document).ready(function() {
  $("a").click(function() {
    ajax_portfolio($(this).attr("port_id"), $(this));
  });
});

// Add the $elem parameter here to track which element called this method.    
function ajax_portfolio($pid, $elem) {
  var url = ...;
  var x = new Request({
    url: url, 
    method: 'post',
    evalScripts: true,
    evalResponse: true,  
    onSuccess: function(responseText){
      document.getElementById('ja-content-main').innerHTML = responseText;
      // Pass the element that was clicked on to the aaa function.
      aaa($elem);
  }
}).send();}
于 2012-05-04T14:55:23.867 に答える