2012-05-04 12 views
0

このページには、ポートフォリオ品目がタブとしてソートされています。 Link to the site。このサイトはJoomla 2.5で構築されており、各ポートフォリオの項目を表示するコンポーネントがあります。 私がする必要があるのは、ページをリロードせずにそれぞれのポートフォリオ項目を読み込むことです。だから、基本的には、ここでAJAX呼び出しページをリロードせずにAJAXでポートフォリオ商品をロード

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();} 

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

答えて

2

イメージをラップする<a>タグの既存のhref属性を削除します。次に、ハンドラをjavacriptを介して、それぞれ<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();} 
+0

Eugh。それをしないでください。代わりにベストプラクティスに従ってください:http://en.wikipedia.org/wiki/Unobtrusive_JavaScript – Quentin

+0

@Quentin私は最も簡単な解決法を提供しようとしていました。しかし、正しい解決策が最も簡単なものではなく、正しいものでなければならないということは間違いありません。私は私の答えを更新しました。ソリューションを改善するための提案がある場合は、コメントを追加してください。ありがとう。 –

関連する問題