繁体   English   中英

如何查找单击的项目是否具有特定的数据属性值

[英]How to find if a clicked item has a certain data attribute value

我有这两个单选按钮

<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>

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

我发现此链接如何使用jQuery选择在数据属性数组中具有特定值的元素,但它仅针对标记的类型。 我不知道如何与$(this)一起使用

我目前一直在和

function checkLogic() { 

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

alert("haslogic");

}
}

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

但没有成功

使用.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也会破坏它。

使用.data()方法:

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

从jQuery 1.4.3开始,HTML 5的data-属性将自动拉入jQuery的数据对象。 在jQuery 1.6中更改了带有嵌入式破折号的属性处理,以符合W3C HTML5规范。

您可以使用普通的JavaScript:

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

JSFiddle

$("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/

您应该检查类型的值。 Javascript类型确实是错误的,因此您需要格外小心:

if (typeof($(this).attr('data-type')) === "undefined")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM