javascript - 为什么我的元素在通过 AJAX 重新加载时没有被定位

标签 javascript jquery html

我在我的项目中使用了对象字面量。我的目标是使用 jquery 进行选择。它第一次运行良好,但当我使用 AJAX 重新加载我定位的部分时,我无法再定位这些元素。但我调查了他们在那里的 Firebug ...... 我什至在做 console.log() 来测试我的代码是否有效并且它有效但它只是不想选择那些。所以为了让它工作,我必须刷新整个浏览器。 你知道 AJAX dom 重新加载和选择器是怎么回事吗?

我认为这与 DOM 重新加载和重绘本身或类似的东西有关...

这是我的代码:

Module.editWishlistTitle = {
  wishListContent: $('.mod-wish-list-content'),
  title: $('.title').find('h2'),
  titleTextField: $('#wishlist-title-field'),
  titleInnerContainer: $('.title-inner'),
  editTitleForm: $('.edit-title-form'),
  submitCancelContainer: $('.submit-cancel'),
  notIE9: $.browser.msie && $.browser.version < 9,

 edit: function () {
  var fieldTxt = this.titleTextField.val(),
      editForm = this.editTitleForm,
      titleParent = this.titleInnerContainer,
      fieldCurrentTitle = this.title.text();

  this.titleTextField.val(fieldCurrentTitle);

  this.submitCancelContainer.removeClass('hidden');

  if (!this.notIE9) {
    editForm.css('opacity', 0).animate({ opacity: 1 }).removeClass('hidden');
    titleParent.addClass('hidden').animate({ opacity: 0 });
    console.log(editForm);
  } else {
    editForm.removeClass('hidden');
    titleParent.addClass('hidden');
  }

 }

 init: function () {
  var self = this;

  console.log(this.editTitleForm);

  //edit
  this.wishListContent.delegate('.edit-title a', 'click', function (e) {
    self.edit();
    e.preventDefault();
  });
};

最佳答案

如果您要替换页面上的一个元素,您将破坏对该元素的原始引用。您需要重做引用以指向新元素。

在您的代码中创建一个新方法来(重新)初始化您需要的引用。不要将它们添加到对象中,而是在方法中设置它们。

基本思路:

Module.editWishlistTitle = {
  wishListContent: $('.mod-wish-list-content'),
  title: $('.title').find('h2'),
  //titleTextField: $('#wishlist-title-field'),
  ...
  ...
  initReferences : function(){
      this.titleTextField = $('#wishlist-title-field');
  },
  ...
  ...

  init: function () {
     this.initReferences();
     ...
     ...

当您的 Ajax 调用返回时,您只需再次调用 initReferences

关于javascript - 为什么我的元素在通过 AJAX 重新加载时没有被定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7582472/

相关文章:

javascript - 将数组列表 javascript 中的图像修复为页面背景

javascript - 如何使用 php 查询处理数据添加多字段输入

javascript - 与单独的框架交互

jquery - 某些 HTML 中的 CSS 通知设计问题

javascript - Bootstrap 弹出窗口中参数容器的用法?

javascript - JavaScript 支持逐字字符串吗?

javascript - 在jade模板中显示mongodb集合

javascript - 为什么在 IE8 中禁用日期不能与 Jquery 日期选择器一起正常工作

javascript - 如何在jquery中保留所有选择元素的选定值

javascript - 如何使用单选按钮将图像移动到屏幕上的不同位置?