附加属性 [data-name] 然后单击使用此数据属性
Attach attribute [data-name] then click using this data attribute
我试图在单击一个元素时添加数据名称属性,然后在单击该元素时执行其他操作。
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$("[data-name='btn02']").on("click", function() {
console.log("I clicked this button");
});
它正在 DOM 中更新但无法正常工作?
有什么想法吗?
您必须使用事件委托,因为您在第二个点击事件 [data-name='btn02']
的选择器中使用的属性是由 JS 代码动态创建的:
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$("body").on("click", "[data-name='btn02']", function() {
console.log("I clicked this button");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" class="btn01">CLICK ME then click the span bellow</button>
<br><br>
<span class="next">Next span</span>
尝试以下方法,使用事件委托将事件附加到“[data-name='btn02']”,因为 $("[data-name='btn02']") 元素不会存在直到 $(".btn01") 被点击。
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$(document).on("click", "[data-name='btn02']", function() {
console.log("I clicked this button");
});
如果您只是想让第一个按钮在第二个按钮之前被点击,您可以为此使用一个 boolean
变量:
var firstButtonClicked = false;
$(".btn01").on("click", function() {
firstButtonClicked = true;
});
// the second button
$(".next").on("click", function() {
if (firstButtonClicked == true) {
console.log("I clicked this button after the first one");
}
});
我试图在单击一个元素时添加数据名称属性,然后在单击该元素时执行其他操作。
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$("[data-name='btn02']").on("click", function() {
console.log("I clicked this button");
});
它正在 DOM 中更新但无法正常工作? 有什么想法吗?
您必须使用事件委托,因为您在第二个点击事件 [data-name='btn02']
的选择器中使用的属性是由 JS 代码动态创建的:
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$("body").on("click", "[data-name='btn02']", function() {
console.log("I clicked this button");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" class="btn01">CLICK ME then click the span bellow</button>
<br><br>
<span class="next">Next span</span>
尝试以下方法,使用事件委托将事件附加到“[data-name='btn02']”,因为 $("[data-name='btn02']") 元素不会存在直到 $(".btn01") 被点击。
$(".btn01").on("click", function() {
$(".next").attr("data-name", "btn02");
});
$(document).on("click", "[data-name='btn02']", function() {
console.log("I clicked this button");
});
如果您只是想让第一个按钮在第二个按钮之前被点击,您可以为此使用一个 boolean
变量:
var firstButtonClicked = false;
$(".btn01").on("click", function() {
firstButtonClicked = true;
});
// the second button
$(".next").on("click", function() {
if (firstButtonClicked == true) {
console.log("I clicked this button after the first one");
}
});