2016-12-30 6 views
1

jQuery/Ajaxを使用して簡単なWebページを実装したいと思います。 3つのボタンがあり、それぞれがajaxコールを使用してサーバーから別のファイルを取得します。唯一の違いは、各ボタンが異なるクラス名を持ち、異なるファイルを呼び出すことです。ローディング時間、ローディングアイコン、成功/失敗メッセージなどはすべて同じです。したがって、私は私が持っている代わりに、3jQuery/ajaxボタン変数を使用してクリック

の、唯一の1のAjax機能を書きたいと思います:

<script> 
$(document).ready(function(){ 
    $(".button1").click(function(){ 
     $.ajax({ 
      url: "button1.txt", 
      /*more code*/ 
     }); 
    }); 
}); 
</script> 

私は、この「ボタン1」と「button1.txtは」になりますように、別の関数を作成したいです変数、および関数から返されるものは、ajax関数で使用されます。この方法で、ajax関数を3回再利用できます。 これはどのように達成できますか?

+0

あなたは3 '

+0

みんなありがとう!私は非常に多くの異なるソリューションがどのようにあるかを見たいと思っています。私は驚きます。私はこの簡単な質問で多くを学んだ。ありがとうございました! – jun

答えて

2

あなたのAjaxのその後

<button class='button1' data-url='button1.txt'>button 1</button> 
<button class='button2' data-url='button2.txt'>button 2</button> 
<button class='button3' data-url='button3.txt'>button 3</button> 

のようにすべての3つのボタンでURLを設定するためのあなたの必要性。

<script> 
$(document).ready(function(){ 
$(".button1, .button2, .button3").click(function(){ 
var url = $(this).attr('data-url'); 
    $.ajax({ 
     url: url", 
     /*more code*/ 
    }); 
}); 
}); 

0

単に

<script> 
    $(document).ready(function(){ 
    $(".button1, .button2 , .button3").click(function(){ 
     $.ajax({ 
      url: "button1.txt", 
      /*more code*/ 
     }); 
     }); 
    }); 
</script> 

2クリックイベントでボタンを追加:

+0

'.button2'をクリックすると' button1.txt'が呼び出されますので、これは目的の動作ではありません。 – Jai

0

EDITは、データのurlという名前の属性を言う、それをフェッチデータ属性を使用して、HTMLでonclikクリックイベントを追加あなたのクリックイベント内

すべてのボタンに同じクラス名を指定します。

<script> 
$(document).ready(function(){ 
    $(".buttonClass").click(function(){ 
     //var value = $(this).attr("value"); 
    var dataUrl = $(this).attr('data-url'); 
     $.ajax({ 
      url: dataUrl, 
      /*more code*/ 
     }); 
    }); 
}); 
</script> 
0

あなたはdata-*接頭辞カスタムを使用することができ、ボタンの値を取得し、AJAX呼び出しに渡すことは$.ajax()機能でアクセスするファイルを格納する属性。共通のクラスを使用してイベントハンドラをアタッチすることができます。

HTML

<button class="button" filename="button1.txt"></button> 
<button class="button" filename="button2.txt"></button> 
<button class="button" filename="button3.txt"></button> 

FileNameがElement.datasetプロパティまたはjQueryの.data()メソッドを使用して取り出すことができます。

スクリプト

$(".button").click(function(){ 
    var fileName = this.dataset.filename; 
    $.ajax({ 
     url: fileName, 
     /*more code*/ 
    }); 
}); 
0

私は、共通のクラス名は十分であろうと思います。この

$(document).ready(function(){ 
    $(".button1, .button2 , .button3").click(function(){ 
     var value = $(this).attr("value"); 
     $.ajax({ 
      url: value, 
      /*main logic*/ 
     }); 
    }); 
}); 
0

を試してみてください。あなたのボタンには異なるIDが必要ですが、必須ではありません。この場合、thisを使用することができます。

私は、これはパラメータ化機能であなたのAJAXを置くことで行うことができると思う:

function myAjaxCall(){ 
    var url = this.textContent.trim().toLowerCase()+'.txt'; 

    $.ajax({ 
     url: url, 
     /*more code*/ 
    }); 
} 

$(document).ready(function(){ 
    $(".button").click(myAjaxCall); 
}); 

、ボタンを考慮してください。

<button class='button'>Button1</button> 
<button class='button'>Button2</button> 
<button class='button'>Button3</button> 
関連する問題