2013-10-09 24 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); 
}