jquery 选择器无法识别已更改的数据属性
Changed data attribute not recognized in jquery selector
我有以下 html 结构
<body data-page="first">
<div class="start">Test</div>
</body>
及以下js
$('body[data-page="first"] .start').on('click',function (){
body.attr('data-page','second');
});
$('body[data-page="second"] .start').on('click',function (){
console.log('Test');
});
我希望在第二次单击 .start 后,控制台会显示“测试”,但它不会...
你能告诉我哪里做错了吗?
提前致谢!
这个方法可以帮助:
var timesClicked = 0;
$('.start').on('click',function (){
timesClicked++;
if (timesClicked>1) {
console.log('Test');
}
});
问题是页面在 data-page 设置为第一个的情况下呈现,当您再次单击它时,javascript 的那部分仍然看到“第一个”,因为没有重新呈现,因此您需要一个动态函数,读取与该按钮的所有交互,然后检查该属性具有的值。这样你可以做无限个案例,然后继续下去。
$('body .start').on('click',function (){
const attr = $('body').attr('data-page');
if(attr === 'first') {
$('body').attr('data-page','second');
} else {
console.log('second');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body data-page="first">
<div class="start">Test</div>
</body>
如果您不喜欢以所有“body”为目标的事实,这很奇怪,因为您应该只有 1 个 body,您可以使用 ID 来定位右一
PS:复制你的函数永远不是一个好主意,如果你可以在动态函数中设置所有内容,它会读取所有内容,更容易在功能中调试,并且更轻巧,更干净继续
$('body[data-page="first"] .start').click(function (){
var body = $('body[data-page="first"] .start');
body.attr('data-page','second');
});
我有以下 html 结构
<body data-page="first">
<div class="start">Test</div>
</body>
及以下js
$('body[data-page="first"] .start').on('click',function (){
body.attr('data-page','second');
});
$('body[data-page="second"] .start').on('click',function (){
console.log('Test');
});
我希望在第二次单击 .start 后,控制台会显示“测试”,但它不会...
你能告诉我哪里做错了吗?
提前致谢!
这个方法可以帮助:
var timesClicked = 0;
$('.start').on('click',function (){
timesClicked++;
if (timesClicked>1) {
console.log('Test');
}
});
问题是页面在 data-page 设置为第一个的情况下呈现,当您再次单击它时,javascript 的那部分仍然看到“第一个”,因为没有重新呈现,因此您需要一个动态函数,读取与该按钮的所有交互,然后检查该属性具有的值。这样你可以做无限个案例,然后继续下去。
$('body .start').on('click',function (){
const attr = $('body').attr('data-page');
if(attr === 'first') {
$('body').attr('data-page','second');
} else {
console.log('second');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body data-page="first">
<div class="start">Test</div>
</body>
如果您不喜欢以所有“body”为目标的事实,这很奇怪,因为您应该只有 1 个 body,您可以使用 ID 来定位右一
PS:复制你的函数永远不是一个好主意,如果你可以在动态函数中设置所有内容,它会读取所有内容,更容易在功能中调试,并且更轻巧,更干净继续
$('body[data-page="first"] .start').click(function (){
var body = $('body[data-page="first"] .start');
body.attr('data-page','second');
});