7

2 つの異なるボタンで実行される jQuery 関数があります。

$("#btnSearch, #btnDirectorSearch").click(function () {

この関数が作成する html の一部は、クリックされたボタンによって異なります。次のように変数を格納するために data- 属性を使用しています。

var div = $(this).data("str");

そして、私が構築しているhtml文字列は、変数「div」の値によって異なります。jQueryでインラインif/elseステートメントを実行する方法はありますか?

if div = "choice1" {
    html += '<tr data-str = "str1" data-dataItem = "dataItem1" data-result-title = "' + name + '" data-result-id="' + sel + '">';

} else {
    html += '<tr data-str = "str2" data-dataItem = "dataItem2" data-result-title = "' + name + '" data-result-id="' + sel + '">';
}

それは面倒なようで、これを行うためのより良い jQuery の方法があることを願っています。

ありがとう!

4

4 に答える 4

28

構文エラーがあります

if div = "choice1" 

する必要があります

if (div == "choice1")

とにかく、探しているパターンは次のとおりです。

div == "choice1" ? <code for true> : <code for false>
于 2013-03-28T13:40:32.030 に答える
3

出力で変化するのは数字だけなので、これを行うことができます:

var num = div == "choice1" ? 1 : 2;
html += '<tr data-str="str'+num+'" data-dataItem="dataItem'+num+'" data-result-title="'+name+'" data-result-id="' + sel + '">';
于 2013-03-28T13:44:39.840 に答える
3

あなたが使用することができますcondition ? code when true: code when false

しかし、中括弧のみを使用することをお勧めします。これは、見た目が良く、デバッグが簡単だからです。もう1つ、以下のようにしてください

if(div==="choice1"){

}
else{
}

===を使用

于 2013-03-28T13:42:08.550 に答える
0

選択肢が限られている場合は、小さなルックアップ配列を追加できます。

var choices = {
    choice1: {
        str: "str1",
        data: "dataItem1"
    },
    choice2: { ... }
};

html += '<tr data-str="' + choices[div].str 
    + '" data-dataItem="' + choices[div].data
    + '" data-result-title="' + name + ... etc;
于 2013-03-28T13:48:09.723 に答える