2012-02-06 93 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