jquery - VueJS 选择 dom 中的特定元素

标签 jquery vue.js vuejs2

我想知道如何在不使用 jquery 的情况下使用 VueJS 选择 DOM 中的特定元素

在我的组件中,我有一个执行此操作的方法函数:

$(".u-loc input").focusin(function() {
    $(".u-loc-icon").addClass('blue-active');
});

唯一的问题是它生成的动态,所以我可以有 1 或 10 个不同的,这意味着我需要为每个选择器都有一个唯一的选择器。

所以我添加了 :ref="'u-loc' + index"

这意味着我现在可以使用 $(this.$refs['u-loc' + index]);

定位元素

但我不知道如何将选择器链接成如下所示:

$(this.$refs['u-loc' + index]).('input').focusin(function() {
  $(this.$refs['u-loc' + index]).addClass('blue-active');
});

问题是我需要选择元素[input]

最佳答案

您使用这种方法会使事情变得非常脆弱。一个快速的解决方法是像这样处理它。

<div class="input-container">
  <input @focusin="addParentClass" @focusout="removeParentClass">
</div>

然后有:

methods: {
  addParentClass (event) {
    event.target
      .closest('.input-container')
      .classList.add('blue-active')
  },
  removeParentClass (event) {
    event.target
      .closest('.input-container')
      .classList.add('blue-active')
  },
},

但是,从长远来看,您应该考虑将它们分解成组件。这样你就可以做类似的事情:

<div :class="[containerClasses]">
  <input @focusout="isFocused = false" @focusin="isFocused = true">
</div>

然后有一个计算属性,如:

computed: {
  containerClasses () {
    return {
      'input-container': true,
      'blue-active': this.isFocused,
    }
  },
},

关于jquery - VueJS 选择 dom 中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46912632/

相关文章:

javascript - 如何将选定的链接/文本输入发布为输出答案

javascript - EmberJS 如何处理 transitionTo

node.js - 组件导致 'npm run dev' 挂起

javascript - 无法访问vue2中子组件动态函数中的槽

javascript - 如何告诉vuefire的firestore在 "created"钩子(Hook)之后执行?

javascript - 如何从函数调用 Jquery 打开模式

javascript - Service Worker已注册成功,但serviceworker.js文件中的代码尚未执行

vue.js - 我无法在 Vuejs 中运行开发服务器

javascript - 简单的 Vuejs 验证代码无法按预期工作?

javascript - Coldfusion Ajax 多文件上传 - CFFile 覆盖 ServerFile