我正在使用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" />
答案 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+'"]
之间没有任何空格或分隔符。
请参阅有关绩效讨论的评论。