jquery .attr("value") 方法取到的值不对的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery .attr("value") 方法取到的值不对的问题相关的知识,希望对你有一定的参考价值。

<li value="0105" class="checked"></li>
然后我用$(this).attr("value"),但是取到的是"105"而不是"0105",貌似是自动转化过了,怎么才能取到"0105"

可能是js的api在取到“0105”时,当成了数字类型自动转成“105”了。

为了不防止自动转换,建议在vlaue属性值前边加入特殊字符,例如:“#10105”这样在读取的时候就不会自动转换了。
但是,用到这个值的时候需要将“#”截取掉。例如:

document..write($("li").attr("value").split("#")[1]); // 这样取出来的值就是“0105”了。

希望能帮到你,^_^
参考技术A 楼主你的jq是哪一个版本的?我1.9的取值正常
<ul>
<li value="0123">123</li>
<li value="022">22</li>
<li value="123">123</li></ul>
<script src="Scripts/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$('li').click(function ()
alert($(this).attr("value"));
);
</script>
参考技术B 自定义属性尽量以data-开头,这样写就不会出现问题了
value-> data-value本回答被提问者采纳

jQuery:value.attr 不是函数

【中文标题】jQuery:value.attr 不是函数【英文标题】:jQuery: value.attr is not a function 【发布时间】:2011-05-06 02:50:45 【问题描述】:

我在我的页面中剪掉了这个:

$('#category_sorting_form_save').click(function()
    var elements = $("#category_sorting_elements > div");
    $.each(elements, function(key, value) 
        console.info(key," : ",value);
        console.info("cat_id: ",value.attr('cat_id'));
    );
);

当它被执行时,我得到:

0 : <div class="dragable" cat_id="6" value="" style="opacity: 1;">    
value.attr is not a function
    console.info("cat_id: ",value.attr('cat_id'));

我在这里做错了什么?我正在尝试获取 div.cat_id 元素的值。

【问题讨论】:

【参考方案1】:

该 jQuery 对象的内容是纯 DOM 元素,它不响应 jQuery 方法(例如 .attr)。您需要将值通过$() 包装成一个jQuery 对象来使用它。

    console.info("cat_id: ", $(value).attr('cat_id'));

或者直接使用DOM方法

    console.info("cat_id: ", value.getAttribute('cat_id'));

【讨论】:

【参考方案2】:

您正在处理原始 DOM 元素 .. 需要将其包装在 jquery 对象中

console.info("cat_id: ",$(value).attr('cat_id'));

【讨论】:

【参考方案3】:

传递给each() 的回调函数的第二个参数将包含实际的DOM 元素,而不是jQuery 包装对象。可以调用元素的getAttribute()方法:

$('#category_sorting_form_save').click(function() 
    var elements = $("#category_sorting_elements > div");
    $.each(elements, function(key, value) 
        console.info(key, ": ", value);
        console.info("cat_id: ", value.getAttribute('cat_id'));
    );
);

或者自己将元素包装在一个 jQuery 对象中:

$('#category_sorting_form_save').click(function() 
    var elements = $("#category_sorting_elements > div");
    $.each(elements, function(key, value) 
        console.info(key, ": ", value);
        console.info("cat_id: ", $(value).attr('cat_id'));
    );
);

或者干脆使用$(this):

$('#category_sorting_form_save').click(function() 
    var elements = $("#category_sorting_elements > div");
    $.each(elements, function() 
        console.info("cat_id: ", $(this).attr('cat_id'));
    );
);

【讨论】:

【参考方案4】:

您也可以使用jQuery('.class-name').attr("href"),在我的情况下效果更好。

这里有更多信息:"jQuery(...)" instead of "$(...)"

【讨论】:

以上是关于jquery .attr("value") 方法取到的值不对的问题的主要内容,如果未能解决你的问题,请参考以下文章

jquery版本号升级不兼容的问题:$(&quot;input&quot;).attr(&quot;value&quot;)功能发生改变

jQuery属性/attr

jQuery中.attr和.data的区别分析

如何给某个控件赋值 jquery

jquery能否用attr()找到自定义属性的元素?详细如下:

jquery-2.0.2 关于attr方法的问题