模拟jQuery:使用纯Javascript的可见选择器
Emulating jQuery :visible selector with plain Javascript
我正在将一段代码从jQuery转换为ChocolateChip UI,这段代码让我很困惑,因为ChocolateChip UI不支持is()
的实现":可见"
if (interactive && block.is(':visible')) {
block.fadeOut(250, function() {
block.html(newContent);
block.fadeIn(750);
});
showHighlight($("#character_text"));
}
我得到的错误是:
Uncaught SyntaxError: Failed to execute query: ':visible' is not a valid selector.
两个问题:
- 如何使用纯JavaScript模拟
is(':visible')
- 如何扩展ChocolateChip UI的
is()
以处理:visible
作为第一个问题的答案:
在jQuery 1.3.2中,如果浏览器报告的offsetWidth或offsetHeight大于0,则元素可见。(来源)
所以
$(element).is(":visible")
应与相同
(element.offsetWidth > 0 || element.offsetHeight > 0)
作为第二个问题的答案:
ChocolateChip UI似乎没有提供扩展选择器的方法。.is()
函数的代码显示,当选择器是一个字符串时,该字符串将直接馈送到.querySelectorAll()
。
然而,您也可以传递一个function
作为参数,因此使用Pieter de Bie指出的谓词,您可以编写:
$.fn.extend({
isVisible: function(){
return this.is( function(elem){
return elem.offsetWidth > 0 || elem.offsetHeight > 0;
});
}
});
if ( $('.mySelector').isVisible() ){
....
}
另一个解决方案是使用jQuery:作者规定他们的库应该与jQuery>2.0.3兼容(请参阅项目的Readme)。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 正在搜索JavaScript日期选择器滑块
- 如何通过选择器元素将图像添加到javascript下拉警报消息中
- 单击时选择2(未选中),显示加载微调器javascript
- JavaScript选择器:查找包含具有特定属性的子体的节点
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 为现有Roslyn语言lexer/parser选择基于javascript的代码编辑器
- 使用javascript"这个“;用于jquery选择器
- JavaScript类列表选择器错误
- 使用javascript和css选择器获取value属性的内容
- Javascript两个日期选择器冲突
- 日期选择器无法使用javascript显示
- 复制Javascript日期选择器
- 从子窗口到父窗口的Javascript弹出选择器
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 当页面回发ASP.NET时,时间选择器javascript将停止工作
- kendo日期选择器javascript文件
- 日期选择器javascript和电子邮件检查ajax java脚本错误
- 时间和日期选择器(Javascript/PHP)
- jquery选择器-JavaScript:querySelectorAll&classList切换未按预期工作