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>

我需要先找出它们是否具有 data-logic 属性,然后是值,以便将 if 语句放在一起,判断值为 yes 或 value 是否为 no。我不能使用 id,因为页面上可能有多个具有数据逻辑的按钮,所以我尝试使用 $(this) 以便它在被点击的任何一个上运行。

我找到了这个链接How to select elements with jQuery that have a certain value in a data attribute array但它特定于标签的类型。我不知道如何将它与 $(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 开始,HTML 5 的数据属性将被自动拉入 jQuery 的数据对象中。jQuery 1.6 中对嵌入破折号的属性的处理进行了更改,以符合 W3C HTML5 规范。

于 2012-10-11T20:53:12.263 回答
1

您可以使用纯 JavaScript:

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

JSF中。

于 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 回答