我有一个脚本可以解决页面顶部元素列表的距离,但我不确定如何检测它与底部的距离.当它击中底部(好吧,在底部之前20px)我想发射一个事件并淡出它:
$(window).on('load resize scroll', function () {
$('.links__item').each(function () {
if (($(this).offset().top - $(window).scrollTop()) < 20) {
$(this).stop().fadeTo(100, 0)
} else {
$(this).stop().fadeTo('fast', 1)
}
})
})
Run Code Online (Sandbox Code Playgroud)
如果有人有任何建议,非常感谢.我正在遍历各个元素以检测它,所以当其中一个从底部击中20px时,我想淡出它.谢谢!
我想要做的是有三个不同的<select>菜单,它们都将被绑定到相同的数据中.更改第一个选择菜单,将更改菜单2和3的数据.
这是我的控制器内部:
$scope.data = [
{
"id" : "0",
"site" : "Brands Hatch",
"buildings" : [
{ "building" : "Building #1" },
{ "building" : "Building #2" },
{ "building" : "Building #3" }
],
"floors" : [
{ "floor" : "Floor #1" },
{ "floor" : "Floor #2" },
{ "floor" : "Floor #3" }
]
},{
"id" : "1",
"site" : "Silverstone",
"buildings" : [
{ "building" : "Building #4" },
{ "building" : "Building #5" …
Run Code Online (Sandbox Code Playgroud) 我不知道你是否需要看到完整的代码,但我看到一些插件可以做到这一点:
window.dataValidate = dataValidate
Run Code Online (Sandbox Code Playgroud)
这是否将"dataValidate"添加到窗口对象,或者它是如何工作的?
我正在编写一个小插件,该插件将封装自动聚焦设置,但是当我使用JavaScript动态添加属性时,它不会自动聚焦页面,这很奇怪。有没有办法解决?
HTML:
<input type="text">
Run Code Online (Sandbox Code Playgroud)
JS:
document.querySelector('input').setAttribute('autofocus', 'autofocus');
Run Code Online (Sandbox Code Playgroud)
不做:
document.querySelector('input').setAttribute('autofocus', 'autofocus').focus();
Run Code Online (Sandbox Code Playgroud)
jSFiddle:http : //jsfiddle.net/wPUNN/
这是我的HTML:
<input type="text" data-setup='{ "method" : "checkbox" }'>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的JavaScript:
var a = document.querySelectorAll('[data-setup]')
for (var i=0;i<a.length;i++) {
alert(a[i].getAttribute('data-setup'));
}
Run Code Online (Sandbox Code Playgroud)
然后警告:
ALERT: { "method" : "checkbox" }
Run Code Online (Sandbox Code Playgroud)
但是我如何访问JSON"方法"?我想基本上能够提醒"复选框"这个词.任何帮助赞赏.
我在 JavaScript/jQuery 插件开发中看到了一个熟悉的模式(Modernizr 使用了第一个示例),通过这种模式,函数很好地包装在 IIFE 中,并在window对象上全局定义。我想问的是,通过执行以下操作使您的插件/脚本在全球范围内可访问是否是个好主意:
window.myPluginName = (function (window, document, undefined) {
// Plugin logic
})(window, document);
Run Code Online (Sandbox Code Playgroud)
我问这个是因为一些脚本/插件需要在调用它们的 DOM 中访问,或者在文档/文件中的其他地方访问。在插件内部,我有时也会看到:
(function (window, document, undefined) {
window.myPluginName = function () {
// Plugin logic
}
})(window, document);
Run Code Online (Sandbox Code Playgroud)
甚至这个:
(function (window, document, undefined) {
var myPluginName = function () {
// Plugin logic
}
window.myPluginName = myPluginName;
})(window, document);
Run Code Online (Sandbox Code Playgroud)
我真的对设置背后的差异很感兴趣,如果有人比我有更多的经验,我会很友好地提供一些最适合开发的建议。谢谢!
我将一些RegExps作为字符串存储在Object中,但是收到上面的错误消息.
我相信这是因为它们没有前缀/后缀/ - 因为我将它们运行到一个新的RegExp()构造函数中,因为脚本允许用户定义RegExps,所以我希望它们都是动态的.
var patterns = {
email: '^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$',
url: '[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)',
number: '^[-+]?[0-9]*\.?[0-9]+$',
empty: '^\\s*$'
};
Run Code Online (Sandbox Code Playgroud)
有上面的字符串.
要修复它们,我可以这样做和/ /它们:
var patterns = {
email: '/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/',
url: '/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/',
number: '/^[-+]?[0-9]*\.?[0-9]+$',
empty: '/^\\s*$/'
};
Run Code Online (Sandbox Code Playgroud)
但是,当new RegExp()
他们确实调用时,他们会这样做(例如):
var reg = new RegExp(patterns.empty);
/**
* reg = //^\\s*$//
*/
Run Code Online (Sandbox Code Playgroud)
双斜线.我的问题作为一个RegExp初学者,是做这些双斜线很重要吗?它可以用另一种方式修复.JSHint抱怨,因为它不是一个"真正的"RegExp.
我也可以从字符串中删除它们并存储为真正的RegExps,但我再次需要它们是动态的.任何帮助赞赏.
我在我的联系表单上使用jQuery来构建我们正在构建的Web应用程序,我从服务器获得JSON响应:
{"success": true}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的jQuery:
$('.contact-form').on('submit', function(e) {
// Prevent submitting
e.preventDefault();
// Loading from data-* attr
var $submit = $('#contact-submit');
$submit.html($submit.data('text'));
// Form data
var form = $(this);
var post_url = form.attr('action');
var post_data = form.serialize();
// Ajax call
$.ajax({
type : 'POST',
url : post_url,
data : post_data,
dataType: 'json',
success: function(){
},
error: function(){
}
});
});
Run Code Online (Sandbox Code Playgroud)
在"成功"jQuery方法之前,我从来没有"检查过"JSON响应,我可以帮上这个吗?我正在寻找一种方法来检查我得到的响应,如果显示"是",我将显示"已发送成功"消息.
JSHint尖叫着应该在循环之外声明函数,我只是对如何做到这一点感到困惑?具体部分:self.onchange = function(){...}
这是循环:
for ( var j = 0; j < checkz.length; j++ ) {
var self = checkz[j];
self.onchange = function () {
for ( var z = 0; z < psswrd.length; z++ ) {
psswrd[z].type = self.checked ? 'text' : 'password';
}
};
}
Run Code Online (Sandbox Code Playgroud)
当我将它移到外面并分配它时,该功能会因为'self'变得不确定而中断.任何建议表示赞赏
我正在编写一个小脚本,使用三元运算符来处理短手'if'语句.代码如下:
self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';
Run Code Online (Sandbox Code Playgroud)
这基本上说,如果选中输入,则输入类型为"text",否则为密码.我有一种感觉,这是我在重复自己的意义上的错误.
理想情况下,我想做这样的事情:
psswrd[z].type ? 'text' : 'password';
Run Code Online (Sandbox Code Playgroud)
但是我如何检查它的'if'部分?我是这个三元方法的新手,所以解释会有很长的路要走,谢谢.
完整循环,如果需要:
for ( var j = 0; j < checkz.length; j++ ) {
var self = checkz[j];
self.onchange = function () {
for ( var z = 0; z < psswrd.length; z++ ) {
self.checked ? psswrd[z].type = 'text' : psswrd[z].type = 'password';
}
}
}
Run Code Online (Sandbox Code Playgroud) 我们都看到该功能检测到执行以下操作:
var touch = function () {
return 'ontouchstart' in window;
};
Run Code Online (Sandbox Code Playgroud)
但我想知道使用in
运算符是否有任何其他好处超过这样(节省几个字节)?
var touch = function () {
return !!window.ontouchstart;
};
Run Code Online (Sandbox Code Playgroud)
使用还有其他好处in
吗?