jQuery选择器:Firefox识别但不是IE

时间:2010-10-07 08:22:15

标签: javascript jquery internet-explorer-8

这是我的元素,带有自定义属性:

<input type="radio" status="B" name="OPT_PARENT"/>


我的剧本:
警报($(本).attr( “状态”));
警报($(本).attr( “测试”));

输出:
Firefox 3.0.10 - &gt; “B”和“未定义”
IE 8.0.7600.16385 - &gt; “真实”和“未定义”

我的观察:
IE将返回选项按钮“已检查状态”,这是真/假而不是自定义属性值。但IE绝对可以检测自定义属性是否存在。

我的问题: 如何在IE中获取自定义属性值?

4 个答案:

答案 0 :(得分:2)

或许更好的选择是使用jquery的Data(),它允许您将数据附加到DOM对象,而无需使用无效/自定义属性修改它们。

我想这会消除浏览器不兼容问题。

答案 1 :(得分:1)

使用自定义属性通常是一个坏主意,即使在允许自定义属性的HTML5中,您拥有的内容也无效。为什么不将任何额外信息作为一个类或一个ID传递?你可以有像

这样的东西
<input type="radio" id="extra_A" name="OPT_PARENT"/>
<input type="radio" id="something_B" name="OPT_PARENT"/>
<input type="radio" id="extra_C" name="OPT_PARENT"/>

我给它加前缀的原因是,选择你需要的元素会更容易:

$("input[id^=extra_]").each(function() {
    alert($(this).attr('id').substr(6));
});

希望这有帮助。

答案 2 :(得分:0)

这是IE的解决方法,使用outerHTML

var status = 
   ($(this)
    .get(0)
    .outerHTML
    .replace(/^.+?\bstatus\s*=\s*(?:['"])(\w+).*$/, 
       function(tag, valueattr) {
          return valueattr;
       })) || '';

答案 3 :(得分:0)

谢谢大家。不知何故,我的朋友告诉我“状态”可能是非自定义属性。所以改变后“状态” - &gt; “myStatus”我的代码工作得很好。