低難度

  1. 如何在頁面加載完成後執行一段代碼?
  • 核心方法$(document).ready()
  • 詳細説明:該方法在DOM加載完成後立即執行,不需要等待圖片等資源加載完成
  • 代碼示例
// 標準寫法
$(document).ready(function() {
    console.log("DOM加載完成,可以安全操作元素");
    // 初始化操作、事件綁定等
});

// 簡寫形式
$(function() {
    console.log("簡寫形式的DOM就緒函數");
});
  • 應用場景:頁面初始化、事件綁定、元素操作等
  1. 如何選擇所有的
    元素?
  • 選擇器類型:元素選擇器
  • 性能考慮:直接元素選擇器性能較好
  • 代碼示例
// 選擇所有p元素並設置樣式
$("p").css({
    "color": "red",
    "line-height": "1.5"
});

// 鏈式操作
$("p").addClass("paragraph").fadeIn("slow");
  1. 如何隱藏一個元素?
  • 方法對比hide() vs css("display", "none")
  • 代碼示例
// 立即隱藏
$("#myElement").hide();

// 帶動畫效果隱藏
$("#myElement").hide(1000, function() {
    console.log("隱藏動畫完成");
});

// 使用CSS方法隱藏
$("#myElement").css("display", "none");
  1. 如何顯示一個隱藏的元素?
  • 顯示方式:恢復元素的原始display值
  • 代碼示例
// 立即顯示
$("#myElement").show();

// 帶動畫顯示
$("#myElement").show("slow");

// 淡入效果
$("#myElement").fadeIn(500);
  1. 如何在一個元素後面插入內容?
  • DOM操作after() 在元素外部後面插入
  • 相關方法before(), insertAfter()
  • 代碼示例
// 在元素後插入HTML字符串
$("#myElement").after("<div class='new-content'>新內容</div>");

// 插入現有元素(移動元素)
$("#existingElement").after($("#movingElement"));

// 使用insertAfter方法
$("<p>新段落</p>").insertAfter("#myElement");

中難度

  1. 如何為一個按鈕添加點擊事件?
  • 事件綁定方法click(), on()
  • 最佳實踐:推薦使用on()方法
  • 代碼示例
// 傳統click方法
$("#myButton").click(function(event) {
    event.preventDefault();
    console.log("按鈕被點擊");
    // 業務邏輯
});

// 使用on方法(推薦)
$("#myButton").on("click", function() {
    alert("按鈕點擊事件觸發");
});

// 事件委託,處理動態添加的元素
$("#container").on("click", ".dynamic-button", function() {
    console.log("動態按鈕被點擊");
});
  1. 如何獲取一個輸入框的值?
  • 表單操作val()方法
  • 注意事項:處理不同類型輸入框
  • 代碼示例
// 獲取文本輸入框值
var username = $("#username").val();

// 獲取單選按鈕選中的值
var gender = $("input[name='gender']:checked").val();

// 獲取多選框選中的值(數組)
var hobbies = [];
$("input[name='hobby']:checked").each(function() {
    hobbies.push($(this).val());
});

// 獲取下拉框選中的值
var city = $("#city").val();
  1. 如何設置一個元素的CSS屬性?
  • CSS操作css()方法
  • 多種用法:單屬性、多屬性、回調函數
  • 代碼示例
// 設置單個屬性
$("#myElement").css("color", "red");

// 設置多個屬性
$("#myElement").css({
    "background-color": "blue",
    "font-size": "16px",
    "padding": "10px"
});

// 使用回調函數
$("#myElement").css("width", function(index, value) {
    return parseInt(value) + 50 + "px";
});
  1. 如何在一個元素內部的開頭插入內容?
  • DOM插入prepend() 在內部開頭插入
  • 相關方法prependTo()
  • 代碼示例
// 插入HTML字符串
$("#container").prepend("<div class='header'>頭部內容</div>");

// 插入現有元素
$("#container").prepend($("#existingElement"));

// 使用prependTo
$("<span>新內容</span>").prependTo("#container");
  1. 如何在一個元素內部的結尾插入內容?
  • DOM插入append() 在內部結尾插入
  • 代碼示例
// 基本用法
$("#container").append("<div class='footer'>底部內容</div>");

// 插入多個元素
$("#container").append(
    "<div>內容1</div>",
    "<div>內容2</div>"
);

// 使用函數動態生成內容
$("#list").append(function(index) {
    return "<li>項目" + (index + 1) + "</li>";
});

高難度

  1. 如何使用jQuery進行AJAX請求?
  • AJAX方法$.ajax(), $.get(), $.post()
  • 完整配置:請求參數、回調處理、錯誤處理
  • 代碼示例
// 完整的AJAX請求
$.ajax({
    url: "/api/users",
    method: "POST",
    data: {
        name: "張三",
        age: 25
    },
    dataType: "json",
    headers: {
        "X-Requested-With": "XMLHttpRequest"
    },
    beforeSend: function(xhr) {
        // 請求發送前的處理
        console.log("請求發送中...");
    },
    success: function(response) {
        console.log("請求成功:", response);
        // 更新UI
        $("#result").html(response.message);
    },
    error: function(xhr, status, error) {
        console.error("請求失敗:", error);
        // 錯誤處理
        alert("請求失敗,請重試");
    },
    complete: function(xhr, status) {
        console.log("請求完成");
    }
});

// 簡化的GET請求
$.get("/api/data", function(data) {
    console.log("GET請求成功:", data);
});
  1. 如何將一個元素從一個父元素移動到另一個父元素?
  • DOM移動appendTo(), prependTo(), insertAfter(), insertBefore()
  • 代碼示例
// 移動元素到新父元素
$("#movingElement").appendTo("#newParent");

// 複雜的DOM重組
var $item = $("#itemToMove");
var $newContainer = $("#newContainer");

// 保存事件和數據
$item.appendTo($newContainer);

// 或者使用detach保持數據和事件
var $detached = $("#itemToMove").detach();
$newContainer.append($detached);
  1. 如何綁定多個事件處理程序到一個元素?
  • 事件管理on()方法的多事件綁定
  • 命名空間:事件命名空間管理
  • 代碼示例
// 綁定多個事件
$("#myElement").on({
    "click": function() {
        console.log("點擊事件");
    },
    "mouseenter": function() {
        $(this).addClass("hover");
    },
    "mouseleave": function() {
        $(this).removeClass("hover");
    },
    "dblclick": function() {
        console.log("雙擊事件");
    }
});

// 使用事件命名空間
$("#myElement").on("click.custom", function() {
    console.log("自定義點擊事件");
});

// 移除特定命名空間的事件
$("#myElement").off(".custom");
  1. 如何使用jQuery動畫效果?
  • 動畫系統animate(), 預定義動畫
  • 隊列控制:動畫隊列管理
  • 代碼示例
// 自定義動畫
$("#myElement").animate({
    left: "+=200px",
    opacity: 0.5,
    height: "toggle"
}, {
    duration: 1000,
    easing: "swing",
    complete: function() {
        console.log("動畫完成");
    },
    step: function(now, fx) {
        // 每一步的回調
        console.log("當前值:", now);
    }
});

// 動畫隊列
$("#myElement")
    .animate({left: "200px"}, 1000)
    .delay(500)
    .animate({top: "100px"}, 800)
    .queue(function(next) {
        // 自定義隊列函數
        $(this).css("background", "red");
        next();
    });
  1. 如何克隆一個元素及其事件處理程序?
  • 深度克隆clone()方法的參數控制
  • 數據和事件:克隆時的事件和數據保持
  • 代碼示例
// 克隆元素(不包含事件和數據)
var $clone1 = $("#original").clone();

// 克隆元素(包含事件和數據)
var $clone2 = $("#original").clone(true);

// 克隆元素(包含事件和數據,並深度克隆子元素)
var $clone3 = $("#original").clone(true, true);

// 實際應用:複製表單行
$(".add-row").click(function() {
    var $row = $(".template-row").clone(true, true);
    $row.find("input").val(""); // 清空輸入框
    $row.appendTo("#form-container");
});

高級技巧和最佳實踐

性能優化策略

// 1. 緩存jQuery對象
var $container = $("#container");
$container.find(".item").addClass("active");
$container.css("border", "1px solid red");

// 2. 使用ID選擇器(最快)
$("#mainContent").show();

// 3. 避免過度使用通用選擇器
$("div.container") // 不好
$(".container")    // 更好

// 4. 使用事件委託處理動態內容
$("#staticParent").on("click", ".dynamic-child", handler);

// 5. 鏈式操作減少DOM查詢
$("#myElement")
    .addClass("active")
    .css("color", "red")
    .slideDown(300);

事件處理最佳實踐

// 命名空間便於管理
$("#element").on("click.myPlugin", handler);
$("#element").off(".myPlugin");

// 一次性事件
$("#element").one("click", function() {
    console.log("只會執行一次");
});

// 自定義事件
$("#element").on("customEvent", function(event, param1, param2) {
    console.log("自定義事件:", param1, param2);
});

// 觸發自定義事件
$("#element").trigger("customEvent", ["參數1", "參數2"]);

AJAX高級應用

// AJAX全局事件
$(document).ajaxStart(function() {
    $("#loading").show();
});

$(document).ajaxStop(function() {
    $("#loading").hide();
});

// AJAX隊列管理
var ajaxQueue = $({});
$.ajaxQueue = function(ajaxOpts) {
    var oldComplete = ajaxOpts.complete;
    ajaxQueue.queue(function(next) {
        ajaxOpts.complete = function() {
            if (oldComplete) oldComplete.apply(this, arguments);
            next();
        };
        $.ajax(ajaxOpts);
    });
};

.NET全棧經典面試題庫

內容涵蓋以下內容

  • ASP.NET MVC應用場景面試題
  • WinForm應用場景面試題
  • jQuery應用場景面試題
  • 3、SQLServer面試題
  • ASP.NET應用場景面試題
  • C#基礎面試題及其答案
  • ASP.NET WebAPI應用場景面試題
  • MySQL面試題
  • SQL Server應用場景面試題

資源下載

下載鏈接1: .NET全棧經典面試題庫

下載鏈接2: .NET全棧經典面試題庫