jQuery attr()返回undefined

时间:2014-04-19 11:42:34

标签: javascript jquery html

我正在使用jquery函数attr()来获取输入元素的自定义属性。但是,此函数会在Chrome中返回undefined。我试图打印这个元素,结果是:

[prevObject: o.fn.init[1], context: document, selector: "input[name="money",uid="1"]", jquery: "2.1.0", constructor: function…]

以下是我的js代码:

$('.panel').each(function(index, element) {
    var uid = $(this).attr('uid');
    console.log($(this));
    var moneyMinusBtn = $(this).find('.btn-money-minus')[0];
    var moneyPlusBtn = $(this).find('.btn-money-plus')[0];
    var moneyInput = $(this).find('input[name="money"]')[0];
    console.log($('input[name="money",uid="'+uid+'"]').attr('uid'));
}

HTML code:

 <input type="number" class="form-control" name="money" value="<?php echo $node['money'] ?>" uid="1" />

2 个答案:

答案 0 :(得分:5)

问题在于您链接属性选择器的方式。这将有效:

$('input[name="money"][uid="'+uid+'"]').attr('uid')

使用data- *属性也可能是个好主意。

答案 1 :(得分:1)

您需要检查呈现的HTML以确保PHP编写正确的值,但无论如何,我认为您不能以您显示的方式要求两个属性:

$('input[name="money",uid="'+uid+'"]')

尝试将其更改为:

$('input[name="money"][uid="'+uid+'"]')

或者甚至(可能是更快的选择器,否则相同):

$('input').filter('[name="money"][uid="'+uid+'"]')

请注意[name="money"][uid="'+uid+'"]之间没有任何空格或分隔符。

请参阅有关绩效讨论的评论。