向插件添加属性(不是默认方式)
Adding properties to a plugin (not the default way)
在jQuery中,我正在创建一整套要包含在项目中的元素。该套件将包含各种元素,如按钮、输入元素、模式弹出窗口和其他元素。
现在,我正在编写的第一个控件是select(下拉菜单),它具有以下语法:
<div class="dropdown" style="height: 20px; width: 100px;">
<div class="legend"></div>
<ul class="elements">
<li>Blue</li>
<li>Green</li>
<li>LightBlue</li>
<li>Orange</li>
<li>Purple</li>
<li>Red</li>
<li>Turquoise</li>
</ul>
</div>
现在,我有了各种JavaScript方法来实现这一点,添加了必要的类和其他东西来确保正常工作。
现在,我确实创建了一个方法,该方法应该执行一段代码,作为元素上的属性。
$('.elements li', dropdownElement).click(function() {
var selectedLiText = $(this).html();
$('.legend', dropdownElement).html(selectedLiText);
var attribute = $(dropdownElement).attr('data-on-change');
if (typeof attribute !== 'undefined' && attribute != '') { eval(attribute); }
$(dropdownElement).ToggleOpen();
});
因此,上面的代码确实表明,当元素上有一个名为"data on change"的属性时,它会将其转换为JavaScript函数并执行它
为了使其发挥作用,HTML应该像下面这样进行调整:
<div class="dropdown" style="height: 20px; width: 100px;" data-on-change="alert('demo');">
<div class="legend"></div>
<ul class="elements">
<li>Blue</li>
<li>Green</li>
<li>LightBlue</li>
<li>Orange</li>
<li>Purple</li>
<li>Red</li>
<li>Turquoise</li>
</ul>
</div>
这将打开一个弹出窗口,并显示文本"Demo"。
有关加工,请参阅本JsFiddle。注意:没有样式,所以它看起来不像DropDown,但只需单击UL中的一个元素,就会显示弹出窗口。
我想做的是,在我的插件中公开something
,使我能够获得所选项目。
所以我希望能够形成我的数据的变化函数,这样:
data-on-change="alert(selectedItem)"
或者
data-on-change="alert(this.selectedItem)".
欢迎所有想法。
我可能会使用function
名称定义,而不是eval()
。只需输入一个要由事件调用的函数名,然后传递所需的参数。
类似。。
if (typeof attribute !== 'undefined' && attribute != '') {
//eval(attribute);
if (typeof(window[attribute]) == 'function'){
// you can pass anything as the argument here..
window[attribute].call(this, {selectedText: selectedLiText});
}
}
HTML就像一样
<div class="dropdown" style="height: 20px; width: 100px;" data-on-change="InvokeFunction">
和事件处理程序本身
window.InvokeFunction = function(args){
alert(args.selectedText);
}
我更新了jsfiddle:https://jsfiddle.net/xq0d0y6r/2/
相关文章:
- 用嵌套函数和默认函数定义函数
- 为什么这在IE中的工作方式与在Firefox中不同
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 如何使用铁流星与流星的默认路线
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 使用javascript存储变量的最安全方式
- CKeditor:更改对话框中的默认选择选项
- 在不阻止默认行为的情况下检测IE10中的缩放
- 向插件添加属性(不是默认方式)
- UIWebView - 以编程方式设置默认日期
- 如何防止从浏览器触发默认快捷方式
- Babel 6改变了导出默认值的方式
- iOS设备处理:hover伪类的默认方式是什么?
- 是否有默认方式向引导表单中的每个输入文本字段添加编辑按钮?
- Silverlight上的快捷方式,以及默认的浏览器快捷方式
- 删除默认IOS日期选择器的最佳方式
- 这是正确的方式吗;覆盖“;jQuery插件(提供默认设置)
- 在 AngularJS 中实现搜索:默认方式