diff --git a/src/radio/radio.html b/src/radio/radio.html index 380974b..31ad593 100644 --- a/src/radio/radio.html +++ b/src/radio/radio.html @@ -1,13 +1,12 @@ - - - - - - - Radio选择 - - - - - -

【YUI3组件】Radio点击高亮

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
参数/方法:类型描述
showindexint初始话高亮哪个,默认不高亮
onloadfunction加载时初始化函数,参数o为本身对象,可在初始化时不可用,如:o.disable()
disablefunction参数为数组Array,[1,2,3]第几个无效,默认为全部无效。
enablefunction函参数为数组Array,[1,2,3]第几个事件恢复,默认为全部恢复。
anchorbool有锚点效果
refreshfunction重新加载数据
-
-
-

初始话高亮显示第几个

-
+
+
+
+
+
+

【YUI3组件】Y.Radio()点击高亮;继承Radio的Y.Checkbox()


+
+/**
+ * radio.js 点击高亮控件
+ * author:lover_116@163.com 灵玉
+ * @class Y.Radio
+ * @param {string} 容器或者触点selector 
+ * @param {object} 配置项
+ * @return {object} 生成一个radio实例
+ * @requires {'node'}
+ * 
+ * Y.Radio:	
+ *	说明:	radio构造器,通过new Y.Radio来render一个radio
+ *	使用:	new Y.Radio(selector,config)
+ *	参数:	selector:{string}容器选择器,获取多个node
+ *	配置:	showindex {num} 默认显示所引
+ *		onload:{function} 初始化扩展操作
+ *		disable:{function} 触发事件,不可点击,参数为Array,[1,2,3]不可点击的所引,默认全部不可点击
+ *		enable:{function} 恢复可点击,参数为Array,[1,2,3]恢复点击,默认全部可点
+ *		range:{start:date,end:date} 默认选择范围
+ *		refresh:{function} 重新加载
+ *
+ * Y.Checkbox:	
+ *	说明:	继承Y.Radio,实现复选框功能
+ *	使用:	new Y.Checkbox(selector,config)
+ * 		changeEvent:{mether} 重写Y.Radio的change事件
+ */
+
+

初始话高亮显示第几个

 YUI().use('radio',function(Y){
-	var oradio1 = new Y.Radio('#J_r1 li a',{
+	var oradio1 = new Y.Checkbox('#J_r1',{
 		showindex:1
 	});
 })
-
-
-
    -
  1. - 基本款 -
  2. -
  3. - 标准款 -
  4. -
  5. - 金款 -
  6. -
  7. - 白金款 -
  8. -
-
-
-
-
-

扩展点击隐藏内容

-
-YUI().use('radio',function(Y){
+
+
+
    +
  1. 基本款
  2. +
  3. 标准款
  4. +
  5. 金款
  6. +
  7. 白金款


+ +

扩展点击隐藏内容

YUI().use('radio',function(Y){
 	var descnodes = Y.all('.kuan-desc li');
 	var radios = new  Y.Radio('#J_r2 li a',{
 		showindex:2,
@@ -144,88 +117,49 @@ 

扩展点击隐藏内容

radios.enable(); }); }) -
-
-
    -
  1. - 基本款 -
  2. -
  3. - 标准款 -
  4. -
  5. - 金款 -
  6. -
  7. - 白金款 -
  8. -
-
    - - - - -
-
-
- -
-

设置全部不可用

-
+
+
+
    +
  1. 基本款
  2. +
  3. 标准款
  4. +
  5. 金款
  6. +
  7. 白金款
+
    + + + +

+ +

Y.Checkbox,继承Radio的checkbox。默认全部失效

 YUI().use('radio',function(Y){
-	var radioTwo = new Y.Radio('#J_r3 li a');
+	var radioTwo = new Y.Checkbox('#J_r3');
 	Y.one('#dt').on('click',function(){
 		radioTwo.disable();
 	});
 	Y.one('#ut').on('click',function(){
 		radioTwo.enable();
-	});
+	})
 })
-
-
-
    -
  1. - 基本款 -
  2. -
  3. - 标准款 -
  4. -
  5. - 金款 -
  6. -
  7. - 白金款 -
  8. -
-
-
-
-
- -

-

样式更换

-
-
    -
  1. - -
  2. -
  3. - -
  4. -
  5. - -
  6. -
  7. - -
  8. -
  9. - -
  10. -
-
-

- - - + + diff --git a/src/radio/radio.js b/src/radio/radio.js index 0d5f966..5210fd1 100755 --- a/src/radio/radio.js +++ b/src/radio/radio.js @@ -1,5 +1,6 @@ /** * radio.js 点击高亮控件 + * * author:lover_116@163.com 灵玉 * @class Y.Radio * @param {string} 容器或者触点selector @@ -12,13 +13,15 @@ * 使用: new Y.Radio(selector,config) * 参数: selector:{string}容器选择器,获取多个node * 配置: showindex {num} 默认显示所引 - * onload:{function} 初始化扩展操作 - * disable:{function} 触发事件,不可点击,参数为Array,[1,2,3]不可点击的所引,默认全部不可点击 - * enable:{function} 恢复可点击,参数为Array,[1,2,3]恢复点击,默认全部可点 - * closeable:{boolean} 是否单选关闭(弹出状态下起作用),默认为false - * anchor:{boolean}是否有锚点效果,去掉e.halt() - * range:{start:date,end:date} 默认选择范围 - * refresh:{function} 重新加载 + * onload:{function} 初始化扩展操作 + * disable:{function} 触发事件,不可点击,参数为Array,[1,2,3]不可点击的所引,默认全部不可点击 + * enable:{function} 恢复可点击,参数为Array,[1,2,3]恢复点击,默认全部可点 + * refresh:{function} 重新加载 + * + * Y.Checkbox: + * 说明: 继承Y.Radio,实现复选框功能 + * 使用: new Y.Checkbox(selector,config) + * changeEvent:{mether} 重写Y.Radio的change事件 */ YUI.namespace('Y.Radio'); YUI.add('radio',function(Y){ @@ -32,7 +35,8 @@ YUI.add('radio',function(Y){ * @param {config}初始配置 */ init:function(selector,config){ - this.nodes = Y.one(selector).get('tagName') == 'A'?Y.all(selector):Y.all(selector).get('parentNode'); + if(!(this.con = Y.one(selector))) return; + this.nodes = this.con.all('a'); this.buildEventCenter(); this.bind(); this.buildParam(config); @@ -56,24 +60,12 @@ YUI.add('radio',function(Y){ * @param {node} object node对象 * @default {null} this.nodes */ - bind:function(node){ + bind:function(){ var that = this; - if(typeof node === 'undefined' || node === null){ - this.nodes.on('click',function(e){ - if(!that.anchor){ - e.halt(); - } - that.changeEvent(e); - }); - } - else{ - node.on('click',function(e){ - if(!that.anchor){ - e.halt(); - } - that.changeEvent(e); - }); - } + Y.delegate('click',function(e){ + e.halt(); + that.changeEvent(e.target); + },that.con,'a'); }, /** * 绑定事件函数 @@ -92,12 +84,10 @@ YUI.add('radio',function(Y){ * change事件的具体实现 * @param {e} 当前触发node */ - changeEvent : function(e){ - var isA = e.target.get('tagName') == 'A'?true:false; - var _n = isA?e.target:e.target.get('parentNode'); - var _i = this.nodes.indexOf(_n); + changeEvent : function(node){ + var _i = this.nodes.indexOf(node); this.nodes.removeClass('selected'); - _n.addClass('selected'); + node.addClass('selected'); //传递change事件的参数 this.EventCenter.fire('change',{index:_i,show:"no"}); }, @@ -120,14 +110,15 @@ YUI.add('radio',function(Y){ * @default null,所有节点失效 */ disable : function(param){ - if(typeof param === 'undefined' || param === null){ - this.nodes.detach('click'); + if(!param){ this.nodes.removeClass('selected').addClass('nohover'); + this.nodes.on('click',function(e){e.halt()}); } else{ for(var i=0;i