2013-10-09 74 views
0

在我的网站是有多个同名复选框的表单:问题与jQuery获得() -

<span class="selection"><input type="checkbox" name="product" value="Hard Enamel" />Hard Enamel</span> 
<span class="selection"><input type="checkbox" name="product" value="Soft Enamel" />Soft Enamel</span> 
<span class="selection"><input type="checkbox" name="product" value="Metal Relief" />Metal Relief</span> 
<span class="selection"><input type="checkbox" name="product" value="Printed With Epoxy" />Printed With Epoxy</span> 

在我的JavaScript,我给你这一个变量,并且有使用JQuery一个onclick功能。有了这个,我仍然可以运行JQuery函数没有问题,例如products.css("display","none")工程。

但是,当试图选择products内的特定复选框时,它会返回一个错误。

这里是我的JS:

var products = $("input[name=product]").click(function(){selectProduct()}); 

products.get(0).css("display","none"); 

以上不工作,我也得到了错误badges_calc.js:9TypeError: 'undefined' is not a function (evaluating 'products.get(0).css("display","none")')

我怎样才能解决这个问题?我很喜欢初学者。

干杯

回答

1

.get()返回原始DOM对象。

你想.eq(0),它只返回一个jQuery对象只有一个元素。

+0

作品,感谢您的快速响应! – user1952067

2

get()返回DOM元素尝试使用eq代替。 DOM元素没有css方法,它是具有它的jquery对象。 eq(0)将为您提供集合中的第一个元素作为jQuery对象。

products.eq(0).css("display","none"); 

如果你真的希望隐藏的跨度与复选框一起再使用:

products.eq(0).closest('span').css("display","none"); 

否则会留下跨度与文本有本身,仅通过隐藏的复选框。

+0

作品,感谢您的快速响应! – user1952067

+1

@ user1952067不客气。 – PSL

+0

对不起,当我第一次看到我认为他是几秒快 – user1952067

1

试试这个:

var products = $("input[name=product]"); 
products.click(function(){selectProduct()}); 
products.eq(0).css("display","none"); 

当您使用.get()你会得到一个原始DOM元素,不能使用jQuery的方法,所以你不能使用.css()

+0

作品,感谢您的快速响应! – user1952067

0

使用最近或父亲隐藏所选输入的父项。

var products = $("input[name=product]").click(function(){selectProduct(this)}); 

var items = []; 
function selectProduct(self){ 
    $(self).closest('span').hide('slow'); 
    items.push($(self).val()); 
    console.log(items); 
}