我有这两个单选按钮
<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);
但未成功
答案 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
}
答案 3 :(得分:1)
$("input").click(function() {
var dataAttr = $(this).attr("data-logic");
if (dataAttr == "yes") {
var value = $(this).attr("value");
alert('Has logic ' + value);
}
});
答案 4 :(得分:0)
您应该使用类型检查值。 Javascript确实是错误的类型所以你需要格外小心:
if (typeof($(this).attr('data-type')) === "undefined")