2016-09-09 5 views
3

私は多くのタイトルを含むサイドバーを持っています。私はそれらのすべてのために関数を書くつもりはありません。ここでは1のコードは次のとおりです。私の読み込みJQuery関数を最適化する方法は?

$("#menu_documentations").click(function() { 
$("#sites").load("documentations/documentations_doc.php"); 
$("html, body").animate({ scrollTop: 0 }, "slow"); 
return false; 
}); 

サイドバーのIDは常に「#menu_xyz」と同じ「xyz_doc.php」を使用してロードするPHPのように見えます。

1つ1つを書くのを避けるにはどうすればよいですか。

+1

はクラスとURL – madalinivascu

答えて

3

htmlのURLのクラスとデータ属性を使用します。madalinのを除いて同じ(

$(".load-ajax").click(function() { 
var url = $(this).attr('data-url');//$(this).attr('href'); 
$("#sites").load(url); 
$("html, body").animate({ scrollTop: 0 }, "slow"); 
return false; 
}); 
+1

のためのデータ属性を使用しますが、それに私を打つ:) – DelightedD0D

+0

があれば ')(' event.preventDefaltを忘れてはいけません'a'タグを使用します。 – DelightedD0D

+1

@ DelightedD0D http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false – madalinivascu

0

以下に働くだろう:

<a class="load-ajax" href="#" data-url="coustom-page-name.html">Link</a> 

または

<a class="load-ajax" href="coustom-page-name.html">Link</a> 

JSは私は別のクラスを追加するのではなく、要素をターゲットにするためにデータ属性自体を使用します):

HTML:

<button data-get-page="documentations/documentations_doc.php">click me </button> 

JS:

$(document).on('click','[data-get-page]',function() { 
    var $this=$(this); 
    var url=$this.data('get-page'); 
    $("#sites").load(url); 
    $("html, body").animate({ 
    scrollTop: 0 
    }, "slow"); 
    return false; 
}); 
関連する問題