jquery:获取自定义属性的值

Posted

技术标签:

【中文标题】jquery:获取自定义属性的值【英文标题】:jquery: get value of custom attribute 【发布时间】:2011-11-02 21:35:19 【问题描述】:

html5 支持 input[type=text] 元素的占位符属性,但我需要处理不兼容的浏览器。我知道有一千个用于占位符的插件,但我想创建第 1001 个。

我能够获取input[placeholder] 元素的句柄,但尝试获取占位符属性的值返回未定义 - $("input[placeholder]").attr("placeholder")

我正在使用 jquery 1.6.2。

这里是jsfiddle。我修改了代码以在兼容 html5 的浏览器中工作,仅用于测试目的。

html

<input type="text" name="email" size="10" placeholder="EMAIL ADDRESS">

jquery

function SupportsInputPlaceholder() 
    var i = document.createElement("input");
    return "placeholder" in i;


$(document).ready(function()
    if(!SupportsInputPlaceholder()) 
        //set initial value to placeholder attribute
        $("input[placeholder]").val($("input[placeholder]").attr("placeholder"));

        //create event handlers for focus and blur
        $("input[placeholder]").focus(function() 
            if($(this).val() == $(this).attr("placeholder")) 
                $(this).val("");
            
        ).blur(function() 
            if($(this).val() == "") 
                $(this).val($(this).attr("placeholder"));
            
        );
    
);

感谢您的任何帮助, 乙

【问题讨论】:

【参考方案1】:

您需要在此处进行某种形式的迭代,因为val(使用函数调用时除外)仅适用于第一个元素:

$("input[placeholder]").val($("input[placeholder]").attr("placeholder"));

应该是:

$("input[placeholder]").each( function () 
    $(this).val( $(this).attr("placeholder") );
);

$("input[placeholder]").val(function() 
    return $(this).attr("placeholder");
);

【讨论】:

$("input[placeholder]").val(function() return $(this).attr("placeholder"); ); 会不会更好? 谢谢丹尼斯。当我在每个上设置断点时,我发现它甚至没有进入函数,就像它没有找到任何与该选择器匹配的元素。但是当我把手表放在 $("input[placeholder]").val() 上时,我看到了 "",如果我给元素一个初始值,我会看到这个值。 @Richard 是的,这有点好。可能没有太大的差异思想。 bflemi3,您使用的是什么浏览器?您的代码适用于 Chrome 和 IE7 我使用的是 firefox 5,并且我已经注释掉了检查浏览器是否支持 placeholder 属性的 if 语句,因为 firefox 5 支持 html5。 我无法重现该问题。您提供的代码工作正常。你能做一个显示它的jsfiddle/jsbin吗?【参考方案2】:

您也可以通过 onclick 事件传递函数来做到这一点

<a onclick="getColor(this);" color="red">

<script type="text/javascript">

function getColor(el)

     color = $(el).attr('color');
     alert(color);


</script> 

【讨论】:

onlick...hmmm...也许应该是 onclick :)

以上是关于jquery:获取自定义属性的值的主要内容,如果未能解决你的问题,请参考以下文章

jquery获取自定义属性的值

Jquery怎么获取select选中项 自定义属性的值

Jquery怎么获取select选中项 自定义属性的值

获取自定义属性 data-* 的值

获取自定义属性 data-* 的值

Jquery怎么获取select选中项 自定义属性的值