Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery提示和技巧 语法 公鸡酸 公鸡酸 内森·朗 公鸡酸 公鸡酸 公鸡酸 公鸡酸 奥利 尼克夫 公鸡酸 数据存储 由TenebrousX 公鸡酸 菲利普·杜帕诺维奇 优化 公鸡酸 卢佩斯惨败 内森·朗 安德烈亚斯·格雷奇 混杂的 红场 按TM 肯 不择手段 江山 公鸡酸 本 按颜色混合 哈里约特 简·齐奇 作者:克里斯S 奥涅德 公鸡酸_Javascript_Jquery - Fatal编程技术网

Javascript jQuery提示和技巧 语法 公鸡酸 公鸡酸 内森·朗 公鸡酸 公鸡酸 公鸡酸 公鸡酸 奥利 尼克夫 公鸡酸 数据存储 由TenebrousX 公鸡酸 菲利普·杜帕诺维奇 优化 公鸡酸 卢佩斯惨败 内森·朗 安德烈亚斯·格雷奇 混杂的 红场 按TM 肯 不择手段 江山 公鸡酸 本 按颜色混合 哈里约特 简·齐奇 作者:克里斯S 奥涅德 公鸡酸

Javascript jQuery提示和技巧 语法 公鸡酸 公鸡酸 内森·朗 公鸡酸 公鸡酸 公鸡酸 公鸡酸 奥利 尼克夫 公鸡酸 数据存储 由TenebrousX 公鸡酸 菲利普·杜帕诺维奇 优化 公鸡酸 卢佩斯惨败 内森·朗 安德烈亚斯·格雷奇 混杂的 红场 按TM 肯 不择手段 江山 公鸡酸 本 按颜色混合 哈里约特 简·齐奇 作者:克里斯S 奥涅德 公鸡酸,javascript,jquery,Javascript,Jquery,我真的不喜欢$(document.ready(fn)快捷方式。当然,它减少了代码,但也减少了代码的可读性。当您看到$(document).ready(…)时,您知道自己在看什么$(…)被用在了太多其他方式上,无法立即发挥作用 如果您有多个框架,那么可以使用jQuery.noConflict()如您所说,但您也可以为其分配不同的变量,如下所示: var $j = jQuery.noConflict(); $j("#myDiv").hide(); (function($) { $('..

我真的不喜欢
$(document.ready(fn)
快捷方式。当然,它减少了代码,但也减少了代码的可读性。当您看到
$(document).ready(…)
时,您知道自己在看什么<代码>$(…)被用在了太多其他方式上,无法立即发挥作用

如果您有多个框架,那么可以使用
jQuery.noConflict()如您所说,但您也可以为其分配不同的变量,如下所示:

var $j = jQuery.noConflict();

$j("#myDiv").hide();
(function($) {
    $('...').etc()    // whatever jQuery code you want
})(jQuery);

如果您有几个框架可以归结为
$x(…)
-风格的调用,那么这非常有用。

明智地使用第三方jQuery脚本,例如表单字段验证或url解析。值得一看是关于什么的,这样你就可以知道下次遇到JavaScript需求的时候了。

我喜欢在匿名函数的开头声明一个
$this
变量,这样我知道我可以引用一个jthis变量

像这样:

$('a').each(function() {
    var $this = $(this);

    // Other code
});

不仅仅是jQuery,我还为jQuery和MS AJAX搭建了一座很好的桥梁:

Sys.UI.Control.prototype.j = function Sys$UI$Control$j(){
  return $('#' + this.get_id());
}
如果你正在做很多ASP.NET AJAX,那就太好了,因为微软现在支持jQuery。有一个漂亮的桥接器意味着jQuery操作非常容易:

$get('#myControl').j().hide();

因此,上面的示例不是很好,但是如果您正在编写ASP.NET AJAX服务器控件,则可以很容易地在客户端控件实现中使用jQuery。它允许您在不修改DOM的情况下将数据绑定到DOM元素。

我总是将jQuery代码包装在一个闭包中,而不是为jQuery对象使用不同的别名(使用noConflict时)。这可以在document.ready函数中完成:

var $ = someOtherFunction(); // from a different library

jQuery(function($) {
    if ($ instanceOf jQuery) {
        alert("$ is the jQuery object!");
    }
});
或者,您可以这样做:

var $j = jQuery.noConflict();

$j("#myDiv").hide();
(function($) {
    $('...').etc()    // whatever jQuery code you want
})(jQuery);

我觉得这是最方便携带的。我一直在一个同时使用Prototype和jQuery的网站上工作,这些技术避免了所有冲突。

创建HTML元素并保留引用

var newDiv = $("<div />");

newDiv.attr("id", "myNewDiv").appendTo("body");

/* Now whenever I want to append the new div I created, 
   I can just reference it from the "newDiv" variable */

编写自己的选择器

if ($("#someDiv").length)
{
    // It exists...
}
$.extend($.expr[":"], {
    over100pixels: function (e)
    {
        return $(e).height() > 100;
    }
});

$(".box:over100pixels").click(function ()
{
    alert("The element you clicked is over 100 pixels height");
});
嵌套过滤器 您可以嵌套过滤器(如所示)

将jQuery对象保存在变量中以供重用 将jQuery对象保存到变量中可以重用它,而无需通过DOM进行搜索

(正如@Louis所建议的,我现在使用$表示变量包含jQuery对象。)

作为一个更复杂的例子,假设您在商店中有一个食品列表,您只想显示符合用户标准的食品。您有一个带有复选框的表单,每个复选框都包含一个条件。复选框的名称有
有机
低脂
,产品有相应的类别-
。有机
,等等

var $allFoods, $matchingFoods;
$allFoods = $('div.food');
现在您可以继续使用jQuery对象了。每次单击复选框(选中或取消选中)时,从食品主列表开始,并根据复选框进行筛选:

// Whenever a checkbox in the form is clicked (to check or uncheck)...
$someForm.find('input:checkbox').click(function(){

  // Start out assuming all foods should be showing
  // (in case a checkbox was just unchecked)
  var $matchingFoods = $allFoods;

  // Go through all the checked boxes and keep only the foods with
  // a matching class 
  this.closest('form').find("input:checked").each(function() {  
     $matchingFoods = $matchingFoods.filter("." + $(this).attr("name")); 
  });

  // Hide any foods that don't match the criteria
  $allFoods.not($matchingFoods).hide();
});
检查索引 jQuery有.index,但使用起来很麻烦,因为您需要元素列表,并传入您想要索引的元素:

var index = e.g $('#ul>li').index( liDomObject );
以下几点要简单得多:

如果您想知道无序列表中集合(例如列表项)中元素的索引:

$("ul > li").click(function () {
    var index = $(this).prevAll().length;
});

在核心jQuery函数上,除了选择器参数之外,还指定上下文参数。指定上下文参数允许jQuery从DOM中更深的分支开始,而不是从DOM根开始。给定足够大的DOM,指定上下文参数应该转化为性能提升

示例:在文档的第一个表单中查找radio类型的所有输入

$("input:radio", document.forms[0]);
参考资料:

哦,别忘了!data()函数很好,但它必须通过jQuery调用填充

而不是使用自定义元素属性破坏W3C合规性,例如:

<input 
  name="email" 
  validation="required" 
  validate="email" 
  minLength="7" 
  maxLength="30"/> 

改用元数据:

<input 
  name="email" 
  class="validation {validate: email, minLength: 2, maxLength: 50}" />

<script>
    jQuery('*[class=validation]').each(function () {
        var metadata = $(this).metadata();
        // etc.
    });
</script>

jQuery('*[class=validation]')。每个(函数(){
var metadata=$(this.metadata();
//等等。
});

语法速记糖东西--缓存对象集合并在一行上执行命令:

而不是:

var jQueryCollection = $("");

jQueryCollection.command().command();
var jQueryCollection = $("").command().command();
$('your_selector').forEach( function() {} );
我有:

var jQueryCollection = $("");

jQueryCollection.command().command();
var jQueryCollection = $("").command().command();
$('your_selector').forEach( function() {} );
有点“真实”的用例可以是这样的:

var cache = $("#container div.usehovereffect").mouseover(function ()
{
    cache.removeClass("hover").filter(this).addClass("hover");
});

用命名函数替换匿名函数。这确实取代了jQuery上下文,但由于它依赖于回调函数,因此它在使用jQuery时似乎发挥了更大的作用。内联匿名函数存在的问题是,它们更难调试(更容易查看具有明确命名函数的调用堆栈,而不是6级“匿名”),而且同一jQuery链中的多个匿名函数可能会变得难以读取和/或维护。此外,匿名函数通常不会重复使用;另一方面,声明命名函数鼓励我编写更有可能重用的代码

插图;而不是:

$('div').toggle(
    function(){
        // do something
    },
    function(){
        // do something else
    }
);
我更喜欢:

function onState(){
    // do something
}

function offState(){
    // do something else
}

$('div').toggle( offState, onState );
实时事件处理程序 为与选择器匹配的任何
元素设置事件处理程序,即使它在初始页面加载后被添加到DOM中:

$('button.someClass').live('click', someFunction);
这就允许了y
<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    <li>Five</li>
</ul>
$("li").filter(function()
{
    var text = $(this).text();

    // return true: keep current element in the collection
    if (text === "One" || text === "Two") return true;

    // return false: remove current element from the collection
    return false;
}).each(function ()
{
    // this will alert: "One" and "Two"       
    alert($(this).text());
});
var subset = $("");

$("input[value^='']", subset);
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
    functions.push(function() { alert(someArray[i]) });
}
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
    functions.push(function() { alert(item) });
});
<script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
<script src="http://www.google.com/jsapi"></script>  
<script type="text/javascript">  

    // Load jQuery  
    google.load("jquery", "1.2.6");  

    google.setOnLoadCallback(function() {  
        // Your code goes here.  
    });  

</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
$('#myImage').attr('src', 'image.jpg').load(function() {  
    alert('Image Loaded');  
});
console.time('create list');

for (i = 0; i < 1000; i++) {
    var myList = $('.myList');
    myList.append('This is list item ' + i);
}

console.timeEnd('create list');
var e = $("<a />", { href: "#", class: "a-class another-class", title: "..." });
$("<a />", {
    ...
    css: {
        color: "#FF0000",
        display: "block"
    }
});
$(document).ready(function ()
{
    // ...
});
$(function ()
{
    // ...
});
$("a").hide().addClass().fadeIn().hide();
$("a")
.hide()
.addClass()
.fadeIn()
.hide();
var oldButton = jQuery("#Submit");
var newButton = oldButton.clone();

newButton.attr("type", "button");
newButton.attr("id", "newSubmit");
newButton.insertBefore(oldButton);
oldButton.remove();
newButton.attr("id", "Submit");
jQuery.forEach = function (in_array, in_pause_ms, in_callback)
{
    if (!in_array.length) return; // make sure array was sent

    var i = 0; // starting index

    bgEach(); // call the function

    function bgEach()
    {
        if (in_callback.call(in_array[i], i, in_array[i]) !== false)
        {
            i++; // move to next item

            if (i < in_array.length) setTimeout(bgEach, in_pause_ms);
        }
    }

    return in_array; // returns array
};


jQuery.fn.forEach = function (in_callback, in_optional_pause_ms)
{
    if (!in_optional_pause_ms) in_optional_pause_ms = 10; // default

    return jQuery.forEach(this, in_optional_pause_ms, in_callback); // run it
};
$('your_selector').forEach( function() {} );
$('your_selector').forEach( function() {}, 1000 );
$('your_selector').forEach( function() {}, 500 );
// next lines of code will run before above code is complete
$("#someElement").hover(function(){
    $("div.desc", this).stop(true,true).fadeIn();
},function(){
    $("div.desc", this).fadeOut();
});
$("<ul>").append((function ()
{
    var data = ["0", "1", "2", "3", "4", "5", "6"],
        output = $("<div>"),
        x = -1,
        y = data.length;

    while (++x < y) output.append("<li>" + info[x] + "</li>");

    return output.children();
}()));
function changeState(b)
{
    $("selector")[b ? "addClass" : "removeClass"]("name of the class");
}
function changeState(b)
{
    if (b)
    {
        $("selector").addClass("name of the class");
    }
    else
    {
        $("selector").removeClass("name of the class");
    }
}
$('selector').toggleClass('name_of_the_class', true/false);
$('.class:first')
$('.class').eq(0)
<p data-xyz = '{"str": "hi there", "int": 2, "obj": { "arr": [1, 2, 3] } }' />
var data = $("p").data("xyz");

data.str // "hi there"
typeof data.str // "string"

data.int + 2 // 4
typeof data.int // "number"

data.obj.arr.join(" + ") + " = 6" // "1 + 2 + 3 = 6"
typeof data.obj.arr // "object" ... Gobbles! Errrghh!