Hướng dẫn jquery parsehtml get element - jquery parsehtml lấy phần tử

Tôi đang viết các bài kiểm tra với QUNIT và sử dụng $.ajax[] để thực hiện HTML cho một số bài kiểm tra từ trang web Dev chạy trên địa phương của tôi:

add_elements = function[location, selector] { 
  $.ajax[location, {async: false}].done[function[data] {
    stor.$els = $[selector, $.parseHTML[data]];
    stor.$els.appendTo[$['body']];
  }]
}

Sử dụng chức năng này tại một vị trí nhất định, tôi nhận được data sau đây được chuyển cho cuộc gọi lại .done[] của tôi:





    Home
    
    




Home Text

Text text text

More text!

Let's go

Mọi thứ hoạt động nếu selector#hero-units hoặc .hero-unit, nhưng $[selector, $.parseHTML[data]] không trả lại gì nếu selector





    Home
    
    




Home Text

Text text text

More text!

Let's go
1! Và tôi muốn một đối tượng




    Home
    
    




Home Text

Text text text

More text!

Let's go
2 cho phần tử




    Home
    
    




Home Text

Text text text

More text!

Let's go
3.

Và đây là những gì giết chết tôi:

  • 
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    4 không chứa phần tử
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    3. Nó chỉ là
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    6.does contain the
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    3 element. It's just
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    6.
  • Tuy nhiên,
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    7 là một mảng trống.
  • 
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    8 bao gồm tất cả các
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    9 bên trong
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    3, nhưng không phải
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    3.

Những gì đang xảy ra ở đây? Có vẻ như những gì đang xảy ra là

jQuery.parseHTML demo

str = "hello, my name is jQuery.",

html = $.parseHTML[ str ],

// Append the parsed HTML

// Gather the parsed HTML's node names

$.each[ html, function[ i, el ] {

nodeNames[ i ] = "

  • " + el.nodeName + "
  • ";

    $log.append[ "

    Node Names:

    " ];

    .append[ nodeNames.join[ "" ] ]

    2 không nhìn vào bất kỳ yếu tố cấp cao nào được trả lại bởi
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    4 hoặc

    jQuery.parseHTML demo

    str = "hello, my name is jQuery.",

    html = $.parseHTML[ str ],

    // Append the parsed HTML

    // Gather the parsed HTML's node names

    $.each[ html, function[ i, el ] {

    nodeNames[ i ] = "

  • " + el.nodeName + "
  • ";

    $log.append[ "

    Node Names:

    " ];

    .append[ nodeNames.join[ "" ] ]

    4, và chỉ là con cái của họ.

    Làm thế nào tôi có thể nhận được một đối tượng

    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    2 cho
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    3 từ
    
    
    
    
        Home
        
        
    
    
    
    
    

    Home Text

    Text text text

    More text!

    Let's go
    4 này?

    CÂU TRẢ LỜI

    Tra cứu kiểu ____ 9 sử dụng

    jQuery.parseHTML demo

    str = "hello, my name is jQuery.",

    html = $.parseHTML[ str ],

    // Append the parsed HTML

    // Gather the parsed HTML's node names

    $.each[ html, function[ i, el ] {

    nodeNames[ i ] = "

  • " + el.nodeName + "
  • ";

    $log.append[ "

    Node Names:

    " ];

    .append[ nodeNames.join[ "" ] ]

    9. Vì tôi đang tìm kiếm một yếu tố cấp cao nhất trong đối tượng jQuery này, tôi nên sử dụng $.ajax[]0 thay thế. Voila.

    jQuery.parsehtml [data [, bối cảnh] [, keepscripts]] return: mảngReturns: Array

    Mô tả: Phân tích một chuỗi vào một mảng các nút dom.Parses a string into an array of DOM nodes.

    • Phiên bản được thêm vào: 1.8JQuery.parsehtml [data [, bối cảnh] [, Keepscripts]]jQuery.parseHTML[ data [, context ] [, keepScripts ] ]

      • dữ liệu

        Chuỗi HTML được phân tích cú pháp

      • Bối cảnh [mặc định: $.ajax[]1] [default: $.ajax[]1]

        Phần tử tài liệu để phục vụ như là bối cảnh trong đó đoạn HTML sẽ được tạo

      • Keepscripts [mặc định: $.ajax[]2] [default: $.ajax[]2]

        Một boolean cho biết có bao gồm các tập lệnh được truyền trong chuỗi HTML

    $.ajax[]3 sử dụng các phương thức gốc để chuyển đổi chuỗi thành một tập hợp các nút DOM, sau đó có thể được chèn vào tài liệu. Các phương pháp này làm cho tất cả các văn bản theo dõi hoặc hàng đầu [ngay cả khi đó chỉ là khoảng trắng]. Để ngăn chặn khoảng trắng kéo dài/hàng đầu không được chuyển đổi thành các nút văn bản, bạn có thể chuyển chuỗi HTML qua $.ajax[]4.

    Theo mặc định, $.ajax[]5 là $.ajax[]1 hiện tại nếu không được chỉ định hoặc được đưa ra là $.ajax[]7 hoặc $.ajax[]8. Nếu HTML được sử dụng trong một tài liệu khác như iframe, tài liệu của khung đó có thể được sử dụng.

    Theo 3.0, hành vi mặc định được thay đổi. Nếu $.ajax[]5 không được chỉ định hoặc được đưa ra là $.ajax[]7 hoặc $.ajax[]8, một $.ajax[]1 mới được sử dụng. Điều này có khả năng cải thiện bảo mật vì các sự kiện nội tuyến sẽ không thực hiện khi HTML được phân tích cú pháp. Khi HTML được phân tích cú pháp được đưa vào một tài liệu, nó sẽ thực thi, nhưng điều này mang lại cho các công cụ cơ hội để vượt qua DOM đã tạo và loại bỏ bất cứ thứ gì được coi là không an toàn. Sự cải thiện này không áp dụng cho việc sử dụng nội bộ của $.ajax[]3 vì chúng thường vượt qua trong $.ajax[]1 hiện tại. Do đó, một tuyên bố như data5 vẫn phải chịu sự tiêm của mã độc.

    Cân nhắc về Bảo mật

    Hầu hết các API jQuery chấp nhận chuỗi HTML sẽ chạy các tập lệnh được bao gồm trong HTML.$.ajax[]3 không chạy các tập lệnh trong HTML được phân tích cú pháp trừ khi data7 rõ ràng là data8.Tuy nhiên, trong hầu hết các môi trường vẫn có thể thực hiện các tập lệnh một cách gián tiếp, ví dụ thông qua thuộc tính data9.Người gọi nên nhận thức được điều này và bảo vệ chống lại nó bằng cách làm sạch hoặc thoát khỏi bất kỳ đầu vào không đáng tin cậy nào từ các nguồn như URL hoặc cookie.Đối với khả năng tương thích trong tương lai, người gọi không nên phụ thuộc vào khả năng chạy bất kỳ nội dung tập lệnh nào khi data7 không xác định hoặc $.ajax[]2.

    Example:

    Tạo một mảng các nút DOM bằng chuỗi HTML và chèn nó vào DIV.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    jQuery.parseHTML demo

    str = "hello, my name is jQuery.",

    html = $.parseHTML[ str ],

    // Append the parsed HTML

    // Gather the parsed HTML's node names

    $.each[ html, function[ i, el ] {

    nodeNames[ i ] = "

  • " + el.nodeName + "
  • ";

    $log.append[ "

    Node Names:

    " ];

    .append[ nodeNames.join[ "" ] ]

    Demo:

    Bài Viết Liên Quan

    Chủ Đề