2

私はこれらの2つのラジオボタンを持っています

<input id="119715_0" type="radio" name="119715" value="76952" data-logic="yes" required /><label for="119715_0">Yes</label>

<input id="119715_1" type="radio" name="119715" value="76953" data-logic="no" required /><label for="119715_1">No</label>

値がyesかどうか、または値がnoかどうかのifステートメントをまとめるために、最初にdata-logic属性があるかどうか、次に値があるかどうかを確認する必要があります。ページ上にデータロジックを持つ複数のボタンがある可能性があるため、IDを使用できません。そのため、$(this)を使用しようとしているので、クリックされた方で実行されます。

このリンクを見つけました。データ属性配列に特定の値を持つjQueryを使用して要素を選択する方法ですが、これはタグのタイプのみに固有です。$(this)での使い方がわかりません

私は現在いじり回しています

function checkLogic() { 

if ($(this).attr("data-logic")) {

alert("haslogic");

}
}

$("input").click(checkLogic);

しかし、失敗しました

4

5 に答える 5

3

.data関数 で確認してください:http: //jsfiddle.net/byzLG/1/

$('input[name="119715"]').click(function() {
    if ($(this).data('logic') !== undefined) {
        alert('Has data-logic');
    } else {
        alert('Does not have data-logic');
    }
});​

私の元のコードで期待どおりに機能しなかったユースケースはif ($(this).data('logic'))、値が0の場合でした。falseの値もそれを壊していたと確信しています。

于 2012-10-11T20:53:38.207 に答える
2

.data()次の方法を使用します。

$("input").on("click", function(){
  if($(this).data("logic"))
    alert("haslogic");
});

jQuery 1.4.3以降、HTML5データ属性はjQueryのデータオブジェクトに自動的に取り込まれます。ダッシュが埋め込まれた属性の処理は、W3CHTML5仕様に準拠するようにjQuery1.6で変更されました。

于 2012-10-11T20:53:12.263 に答える
1

プレーンJavaScriptを使用できます。

if(element.getAttribute("data-logic") === null) {
   // Doesn't have attribute
}

JSFiddle

于 2012-10-11T20:51:57.587 に答える
1
$("input").click(function() {
    var dataAttr = $(this).attr("data-logic");

    if (dataAttr == "yes") { 
      var value = $(this).attr("value");
      alert('Has logic ' + value);
    }

}); 

http://jsfiddle.net/wCRLE/1/

于 2012-10-11T20:52:07.297 に答える
0

タイプで値を確認する必要があります。Javascriptは型に関して本当に間違っているので、特に注意する必要があります。

if (typeof($(this).attr('data-type')) === "undefined")
于 2012-10-11T20:53:52.023 に答える