Javascript 如何使用具有相同输入类型的两个.同级?

Javascript 如何使用具有相同输入类型的两个.同级?,javascript,jquery,Javascript,Jquery,我也想拍《行尸走肉》,但它只隐藏了第一部。我可以上课吗?这个还是我该怎么做 $(".articel input[type='button']").click(function(){ var price = $(this).siblings("input[type='hidden']").attr("value"); var quantity = $(this).siblings("input[type='number']"

我也想拍《行尸走肉》,但它只隐藏了第一部。我可以上课吗?这个还是我该怎么做

$(".articel input[type='button']").click(function(){                    
        var price = $(this).siblings("input[type='hidden']").attr("value");
        var quantity =  $(this).siblings("input[type='number']").attr("value");
        var name = $(this).siblings("input[type='hidden']").attr("value");
        var ul = document.getElementById("buylist"); 
        var prod = name + " x " + quantity + " " + price + "$";

        var el = document.createElement("li"); 
        el.innerHTML = prod; 
        ul.appendChild(el);

<form class="articel">
        Quantity: <input type="number" style="width:25px;"><br>
        Add to cart: <input type="button" class="btn">
        <input type="hidden" value="30">
        <input type="hidden" value="The walking dead">
</form>
$(“.articel输入[type='button']”)。单击(函数(){
var price=$(this.sibbins(“输入[type='hidden']”)attr(“值”);
var quantity=$(this.sibbines(“输入[type='number'])).attr(“值”);
var name=$(this.sillides(“输入[type='hidden']”)attr(“值”);
var ul=document.getElementById(“买方清单”);
var prod=名称+“x”+数量+“”+价格+“$”;
var el=document.createElement(“li”);
el.innerHTML=prod;
ul.儿童(el);
数量:
添加到购物车:
识别表单字段的常规方法是通过
名称
属性

HTML:

当前选择器
同级(“input[type='hidden'])
选择所有隐藏字段同级,但由于无法识别它们,
attr
将始终只生成第一个匹配的值

您还可以对元素集合进行迭代,或通过索引
同级('input[type=hidden]:eq(1)
同级('input[type=hidden])访问它们。eq(1)例如,
,但如果您为其他内容添加另一个隐藏字段,这是一种糟糕的设计,它会破坏您的代码。您确实应该更喜欢命名您的元素,以便以有意义的方式访问它们并了解您的数据。这样,您就可以根据新的要求自由移动和修改标记,而不会中断你的剧本


顺便说一下,我正在使用上面的
.val()
,它是
.attr('value')
的缩写,一个选项是使用特殊的选择器,例如
:first
:last

var price = $(this).siblings("input[type='hidden']:first").attr("value");
var name = $(this).siblings("input[type='hidden']:last").attr("value");
但是,始终可以为元素设置类名:

<input type="hidden" class="price" value="30">
<input type="hidden" class="name" value="The walking dead">

var price = $(this).siblings(".price").attr("value");
var name = $(this).siblings(".name").attr("value");

var价格=$(this.sibbines(“.price”).attr(“value”);
var name=$(this.sibbines(“.name”).attr(“value”);

我会在你的隐藏输入(price,name)中添加一个类名。这样html源代码更可读,js代码也更可读。

谢谢,我使用了Davids answer。啊,看到你使用了.val而不是.attr('value')).谢谢你提供的额外信息。我在这里的时候可以问另一个问题吗…?如果你知道一种简单的方法,使输入的数量数字只接受整数而不接受小数?
var price = $(this).siblings("input[type='hidden']:first").attr("value");
var name = $(this).siblings("input[type='hidden']:last").attr("value");
<input type="hidden" class="price" value="30">
<input type="hidden" class="name" value="The walking dead">

var price = $(this).siblings(".price").attr("value");
var name = $(this).siblings(".name").attr("value");