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

时间:2012-10-11 20:48:44

标签: javascript jquery html

我有这两个单选按钮

<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或者值为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);

但未成功

5 个答案:

答案 0 :(得分: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也会破坏它。

答案 1 :(得分:2)

使用.data()方法:

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

<强> EXAMPLE

  

从jQuery 1.4.3开始,HTML 5数据属性将自动生成   拉入jQuery的数据对象。用属性处理属性   在jQuery 1.6中更改了嵌入式破折号以符合W3C HTML5   说明书

答案 2 :(得分:1)

您可以使用纯JavaScript:

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

JSFiddle

答案 3 :(得分: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/

答案 4 :(得分:0)

您应该使用类型检查值。 Javascript确实是错误的类型所以你需要格外小心:

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