Điểm:-2

Jquery để di chuyển trường phía trên bảng - thay đổi trong khi làm mới trang

lá cờ in

Tôi có mã jquery bên dưới để di chuyển trường nhiều lựa chọn và nút phía trên bảng.

jQuery(tài liệu).ready(function($){
  $('#views-form-resources-block-1 .form-item-ka-types').insert Before($('#views-form-myblock-block-1 table'));
  $('#views-form-resources-block-1 #edit-actions--2').insertafter($('#views-form-myblock-block-1 .form-item-ka-types'));
});

Trong mã này, tôi đang di chuyển trường ka-type phía trên chế độ xem khối của tôi. đại diện hình ảnh như dưới đây:

nhập mô tả hình ảnh ở đây

Mã này hoạt động tốt khi tôi tải trang lúc đầu. Nhưng khi tôi làm mới trang, đa lựa chọn không hoạt động và hiển thị lộn xộn. một lần nữa khi tôi làm mới trang, nó hoạt động tốt. Không chắc vấn đề là gì. Bất kỳ trợ giúp về cách này có thể được sửa chữa?

Kevin avatar
lá cờ in
Javascript không được viết theo cách mà Drupal sẽ đính kèm nó khi dom thay đổi, vì vậy khi một biểu mẫu được xây dựng lại, điều này sẽ bị mất. Có thể dễ dàng ghi đè mẫu Chế độ xem này hơn để di chuyển bộ lọc so với buộc nó bằng jquery.
Kevin avatar
lá cờ in
Nếu không, hãy xem lại tài liệu Drupal về Hành vi Drupal.
sonfd avatar
lá cờ in
Tôi cũng khuyên bạn nên làm điều này với mẫu của chế độ xem javas của bạn. Những thay đổi JavaScript như thế này sẽ khiến nội dung trang thay đổi, đây không phải là một UX đẹp.Điều này thậm chí có thể ảnh hưởng tiêu cực đến SEO của bạn vì điểm số [Chuyển đổi bố cục tích lũy (CLS)](https://web.dev/cls/) của trang là một yếu tố.
Hermann Schwarz avatar
lá cờ cn
Bạn có thể nói chính xác được không, lần làm mới đầu tiên có nghĩa là gì? Một biểu mẫu gửi? Vì vậy, có thể DOM trông hơi khác sau khi gửi.
Hermann Schwarz avatar
lá cờ cn
Bạn cũng có thể kiểm tra xem bảng điều khiển công cụ web có hiển thị bất kỳ lỗi JS nào không, vì vậy JS của bạn không bao giờ được thực thi sau khi gửi biểu mẫu (lần làm mới đầu tiên)
Jiah avatar
lá cờ in
Tôi có thể đạt được điều này bằng cách sử dụng Drupal Behaviors.
Điểm:1
lá cờ in

Dưới đây là giải pháp của tôi cho việc này:

(hàm($, Drupal) {
  Drupal.behaviors.searchResults = {
    đính kèm: hàm() {
      $('#views-form-resources-block-1 .form-item-ka-types')
        .insertB Before($('#views-form-myblock-block-1 table'));
      $('#views-form-resources-block-1 #edit-actions--2')
        .insertafter($('#views-form-myblock-block-1 .form-item-ka-types'));
    }
  };
}(jQuery, Drupal));

@Kevin là chính xác. Khi biểu mẫu xây dựng lại, các thay đổi DOM sẽ bị mất. Hiểu rõ hơn về các hành vi Drupal liên kết có lời giải thích tuyệt vời và các ví dụ về Hành vi Drupal.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.