jquery:获取自定义属性的值

bfl*_*mi3 49 jquery custom-attributes attr

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

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

我正在使用jquery 1.6.2.

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

HTML

<input type="text" name="email" size="10" placeholder="EMAIL ADDRESS">
Run Code Online (Sandbox Code Playgroud)

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"));
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

感谢任何和所有的帮助,B

Den*_*nis 52

你需要某种形式的迭代,因为val(除了用函数调用时)只适用于第一个元素:

$("input[placeholder]").val($("input[placeholder]").attr("placeholder"));
Run Code Online (Sandbox Code Playgroud)

应该:

$("input[placeholder]").each( function () {
    $(this).val( $(this).attr("placeholder") );
});
Run Code Online (Sandbox Code Playgroud)

要么

$("input[placeholder]").val(function() {
    return $(this).attr("placeholder");
});
Run Code Online (Sandbox Code Playgroud)

  • 不会`$("输入[占位符]").val(function(){return $(this).attr("placeholder");});`哪个更好? (2认同)

Pri*_*tel 10

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

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

<script type="text/javascript">

function getColor(el)
{
     color = $(el).attr('color');
     alert(color);
}

</script> 
Run Code Online (Sandbox Code Playgroud)

  • onlick...嗯...也许应该是 onclick :) (2认同)