我有html表。我想通过单击自身来更改其class
。
当我更改课程时,我想通过单击课程后面的button
来选择每个课程
我的尝试如下。如何通过单击style
来提取button
?
谢谢
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this); ??
})
$('.click_td').on('click', function(e) {
e.preventDefault();
$(this).AddClass(style); ??
});
.style1{
background: rgb(255, 0, 255);
border-radius: 5px;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn" class="style1">style1</button>
<button class="click_btn" class="style2">style2</button>
答案 0 :(得分:3)
您不应在元素中多次具有相同的属性,如果这样做,则第一个属性之后的属性将被静默忽略。尽管最好的方法是在此处使用 data-* 属性。另外,AddClass
中有一个错字,应该是addClass
。
您可以尝试以下方式:
var style;
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this).data('style');
})
$('.click_td').on('click', function(e) {
$(this).removeClass('style1, style2');
e.preventDefault();
$(this).addClass(style);
style = '';
});
.style1{
background: rgb(255, 0, 255);
border-radius: 5px;
color: red;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn" data-style="style1">style1</button>
<button class="click_btn" data-style="style2">style2</button>
答案 1 :(得分:3)
多次使用class
属性不是一个好习惯,我们可以将其替换为data
属性。因此,每次单击按钮时,都会使用data
属性值,然后将此值添加到表td click_td
中。
现在只需单击按钮即可完成操作,但是也可以用点击td
来代替;)
var $ = jQuery;
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this).data().style;
$('.click_td').removeClass('style1 style2').addClass(style)
})
.style1{
background: rgb(255, 0, 255);
border-radius: 5px;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn" data-style="style1">style1</button>
<button class="click_btn" data-style="style2">style2</button>
这是第二种方法,此处将样式复制到变量,然后单击td
应用于td
var $ = jQuery;
var style ='';
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this).data().style;
})
$('.click_td').on('click', function(){
$(this).removeClass('style1 style2').addClass(style)
})
.style1 {
background: rgb(255, 0, 255);
border-radius: 5px;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn" data-style="style1">style1</button>
<button class="click_btn" data-style="style2">style2</button>
答案 2 :(得分:2)
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this).attr('class'); //will return style1/style2
})
答案 3 :(得分:2)
class
属性。innerText
而不是class
值。
let prevStyle = '';
let style = '';
$('.click_btn').on('click', function(e) {
e.preventDefault();
prevStyle = style;
style = $(this).text();
})
$('.click_td').on('click', function(e) {
e.preventDefault();
$(this).removeClass(prevStyle);
$(this).addClass(style);
});
.style1 {
background: rgb(255, 0, 255);
border-radius: 5px;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn style1">style1</button>
<button class="click_btn style2">style2</button>
答案 4 :(得分:2)
$(()=>{
var style = $(this).attr('class');
$('.click_btn').on('click', function(e) {
e.preventDefault();
style = $(this).attr('class');
})
$('.click_td').on('click', function(e) {
e.preventDefault();
console.log(style);
$(this).attr('class','');
$(this).addClass(style);
});
})
.style1{
background: rgb(255, 0, 255);
border-radius: 5px;
}
.style2 {
background: rgb(0, 255, 255);
border-radius: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="click_td">color</td>
<td class="click_td">color 2</td>
</tr>
</table>
<button class="click_btn style1">style1</button>
<button class="click_btn style2">style2</button>