2017-10-17 55 views
0

我已經寫了幾個簡單的代碼行,允許在單擊時將邊框導航中的複選框發送到指定的鏈接。複選框用作過濾器。
這裏是複選框的HTML:創建交互簡化jquery/javascript的複選框鏈接

<li class="inactive" aria-selected="false"> 
<input id="path1" type="checkbox" value="Accessories"> 
<a href="href">Accessories</a> 
</li> 

而jQuery的/ JavaScript的:

$('#path1').click(function(){ 
       window.location='href'; //href would be a unique link 
    }); 

問題沒有得到這種互動的工作,我有一個邏輯問題。它的編寫方式是針對複選框的ID。它不可擴展。 8個鏈接並不那麼糟糕,但500個鏈接,每一個獨特,你明白了。

是否有解決方案針對每個複選框,但允許每個複選框的唯一鏈接?即瞄準一流,使所有的複選框都具有相同的HREF,所以這是不是一種選擇,等

+1

從哪裏'href'會來? –

+1

'$(「input [type ='checkbox]'」)。click(....)'另外,這與「縮小」有什麼關係,它將代碼重構爲將其縮小爲最小量字節? –

+0

'href'是鏈接的替身。所以點擊時它可能是'/ products/valves /'之類的東西,但是有很多複選框,每個複選框都會到不同的地方,我認爲它會使示例使用實際的鏈接。 –

回答

1

你可以做到以下幾點:

<input type="checkbox" data-custom-click="href"> 

,因爲你需要將上面的代碼可以重複多次,讓你有儘可能多的數量複選框,只要你想。

注意href在上面的HTML代表您的特定複選框的鏈接。

而一個襯墊的JavaScript:

$("input[data-custom-click]").click(function(){ 
    window.location=$(this).attr("data-custom-click"); 
}); 

的選擇input[data-custom-click]將選擇所有的自定義行爲複選框和$(this)選擇點擊複選框。

+0

這看起來不錯。我會測試,但它很有意義,它很可能會工作。 –

+0

你能提供你的代碼的js小提琴,以便我可以從那裏調試它嗎? –

+0

這解決了我的問題。謝謝!第一次處理DRY這幫助我進一步發展。 –

1

假設你href價值來自於跟隨輸入的鏈接,您可以使用:

$('li.inactive input[type="checkbox"]').click(function(){ 
    window.location = $(this).next('a').attr('href') 
}); 
+0

我把我的href放在錯誤的地方了嗎?你是說我需要把它放在其他地方,並用你提供的代碼來定位它? –