为什么我的 jquery 只影响我的 iron-list 的第一个条目?
why does my jquery only affect the first entry of my iron-list?
我有一个我想要的铁列表,当单击列表的一个条目时,左边框出现并在单击 off/another 条目时消失。
我已经设法搜索页面以找到一些看起来很有希望的 JQuery 并且使我能够在第一个条目上获得边框,但是它在这里停止。单击其他条目时,顶部条目获得边框,而不是单击的条目。
有什么帮助吗?
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="../bower_components/polymer/polymer.html">
<dom-module id="test-app-test">
<template>
<style>
div {
height: 20px;
border-bottom: 1px lightgrey solid;
}
.red {
border-left: 10px solid red;
}
</style>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
</template>
<script>
Polymer({
is: 'test-app-test',
properties: {
bgc: {
type: String,
observer: 'bgcChanged'
}
},
toggleClass: function(e) {
var toggleBorder = Polymer.dom(this.root).querySelector('.hello');
$(toggleBorder).toggleClass('red');
},
bgcChanged: function() {
var toggleBorder = Polymer.dom(this.root).querySelector('.hello');
toggleBorder.style.backgroundColor = this.bgc;
}
});
</script>
</dom-module>
我不熟悉 Polymer,但按照代码,在我看来使用 .querySelector('.hello')
可能只会找到 class 的第一次出现。以下是在 toggleClass
函数中不使用 Polymer 的方法。
toggleClass: function(e) {
$(e.target).parent().find('.red').removeClass('red');
$(e.target).addClass('red');
},
注意:我无法测试它以确保它在您的示例中有效。
使用 querySelector
仅选择第一次出现。只需将 querySelector
替换为 querySelectorAll
即可
顺便说一句。使用 toggleClass
不需要 jquery。 Polymer 也有内置的方法。 https://www.polymer-project.org/1.0/docs/api/Polymer.Base#method-toggleClass
我有一个我想要的铁列表,当单击列表的一个条目时,左边框出现并在单击 off/another 条目时消失。
我已经设法搜索页面以找到一些看起来很有希望的 JQuery 并且使我能够在第一个条目上获得边框,但是它在这里停止。单击其他条目时,顶部条目获得边框,而不是单击的条目。
有什么帮助吗?
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="../bower_components/polymer/polymer.html">
<dom-module id="test-app-test">
<template>
<style>
div {
height: 20px;
border-bottom: 1px lightgrey solid;
}
.red {
border-left: 10px solid red;
}
</style>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
<div class="hello" on-click="toggleClass">hello</div>
</template>
<script>
Polymer({
is: 'test-app-test',
properties: {
bgc: {
type: String,
observer: 'bgcChanged'
}
},
toggleClass: function(e) {
var toggleBorder = Polymer.dom(this.root).querySelector('.hello');
$(toggleBorder).toggleClass('red');
},
bgcChanged: function() {
var toggleBorder = Polymer.dom(this.root).querySelector('.hello');
toggleBorder.style.backgroundColor = this.bgc;
}
});
</script>
</dom-module>
我不熟悉 Polymer,但按照代码,在我看来使用 .querySelector('.hello')
可能只会找到 class 的第一次出现。以下是在 toggleClass
函数中不使用 Polymer 的方法。
toggleClass: function(e) {
$(e.target).parent().find('.red').removeClass('red');
$(e.target).addClass('red');
},
注意:我无法测试它以确保它在您的示例中有效。
使用 querySelector
仅选择第一次出现。只需将 querySelector
替换为 querySelectorAll
即可
顺便说一句。使用 toggleClass
不需要 jquery。 Polymer 也有内置的方法。 https://www.polymer-project.org/1.0/docs/api/Polymer.Base#method-toggleClass