2012-02-06 88 views
0

。我在窗體上使用custom form elements使用jQuery自定義表單元素

<fieldset> 
    <legend id="Cities">Cities</legend> 
    <div class="legend-underline"></div> 
    <div class="filters" id="Cities-filters"> 
    <div> 
    <span class="checkbox" style="background-position: 0pt -34px;"></span> 
    <input type="checkbox" value="Adelaide" class="styled" name="sidecity" id="sidecity-control-name-0"> 
    <label for="sidecity-control-name-0">Adelaide (58)</label> 
    </div>      
</fieldset> 

[更新]

var inputs = $('.filters-widget.bordered div[class!="filters"]'); 
inputs.each(function (index, element) { 
$(element).click("click", function() { 
console.log(element); 
}); 
}); 

當我在DIV點擊方法日誌()被調用了兩次。

如何解決這個問題?

+1

是什麼使自定義這些元素的任意之後,他們看起來非常標準的給我。您在什麼情況下嘗試更改複選框? – Gabe 2012-02-06 17:53:49

+0

我一直在使用[自定義元素](http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/),而不是標準複選框有span class =「checkbox」 – BILL 2012-02-07 11:30:55

回答

1

將事件處理程序綁定到複選框click事件。您可以確定該複選框是否是由您的處理程序檢查checked屬性檢查與否:

$('#sidecity-control-name-0').click(function() { 
    console.log(this.checked); 
}); 

http://jsfiddle.net/qgR42/

+0

我可能會不通過自定義表單元素工作 – BILL 2012-02-06 18:11:17

+0

var inputs = $('。filters-widget.bordered div'); inputs.each(函數(指數,元素){ $(元件)。單擊(函數(){ 的console.log(元件); }); });'' – BILL 2012-02-07 11:58:54

+0

變種輸入= $(」。 filters-widget.bordered div [class!=「filters」]'); (function)(function(index,element){(element).click(「click」,function(){console.log(element); }); });'當我點擊div方法log()被調用兩次 – BILL 2012-02-07 12:26:30

1

你要創建的標記自定義元素?餿主意。嘗試將元素設置爲標記後,將其設置爲css以顯示:無。使用元素的更改事件來確定如何顯示標記元素。

這就是jQuery UI和Uniform做的。檢查出來

1

嘗試。對功能複選框被稱呼

+0

['live'](http://api.jquery.com/live/)方法從1.7開始被棄用,甚至在此之前不推薦使用。請停止建議。 – kapa 2012-02-07 09:12:10

+0

感謝您指出,更新 – 2012-02-07 09:20:46