动态更改按钮的 class 名称后,onClick 函数将不起作用
onClick function won't work after dynamically changing button's class name
我有一个按钮,一旦单击它就会向其他两个按钮添加一个 class 并从两个按钮中删除一个 class。该按钮还更改隐藏 HTML 输入
的值
这是我的三个按钮
//Main button
<button type="submit" id="estimate-button1"
class="btn btn-default btn-submit request-button">
Get Estimate
</button>
//Button that class is changed
<button type="submit" class="btn btn-default btn-submit estimate-button">
Get Estimate
</button>
//Button that class is changed
<button type="submit" class="btn btn-default btn-submit estimate-button">
Get Estimate
</button>
下面两个按钮是一样的。它们只是放置在网页的不同部分。
当按下第一个按钮 main button
时,它会从其他两个按钮中删除 class estimate-button
,然后将 class request-button
添加到class 都是。这部分效果很好,但这是我遇到问题的地方。
我有一组 onClick
函数,这些函数在单击上述按钮之一时激活。这就是它们,
$(document).ready(function() {
$( ".request-button" ).click(function() {
$('#method').val("request");
});
$( "#estimate-button1" ).click(function() {
$('#method').val("estimate");
});
$( ".estimate-button" ).click(function() {
$('#method').val("estimate");
});
});
当我从按钮中动态删除 class estimate-button
,然后添加 class request-button
,然后单击如下所示的新按钮时,
<button type="submit" class="btn btn-default btn-submit request-button">
Send Request
</button>
不激活对应的onClick
功能。很简单,什么都不做。这是为什么?
您需要使用委托事件让它与现在和将来匹配选择器的元素一起工作。
将您的代码更改为:
$(document).ready(function() {
$('body').on('click', ".request-button", function() {
$('#method').val("request");
});
$('body').on('click', "#estimate-button1", function() {
$('#method').val("estimate");
});
$('body').on('click', ".estimate-button", function() {
$('#method').val("estimate");
});
});
使用jquery委托方法解决这个动态内容问题
$(document).ready(function() {
$( document). on('click', ".request-button" ,function() {
$('#method').val("request");
});
$( document). on('click',"#estimate-button1" ,function() {
$('#method').val("estimate");
});
$( document). on('click',".estimate-button",function() {
$('#method').val("estimate");
});
});
有一些与event delegation since you change the dom class name dynamically. Try using .on()函数相关的代码如下。
$( document ).on('click','.request-button',function() {
$('#method').val("request");
});
我有一个按钮,一旦单击它就会向其他两个按钮添加一个 class 并从两个按钮中删除一个 class。该按钮还更改隐藏 HTML 输入
的值这是我的三个按钮
//Main button
<button type="submit" id="estimate-button1"
class="btn btn-default btn-submit request-button">
Get Estimate
</button>
//Button that class is changed
<button type="submit" class="btn btn-default btn-submit estimate-button">
Get Estimate
</button>
//Button that class is changed
<button type="submit" class="btn btn-default btn-submit estimate-button">
Get Estimate
</button>
下面两个按钮是一样的。它们只是放置在网页的不同部分。
当按下第一个按钮 main button
时,它会从其他两个按钮中删除 class estimate-button
,然后将 class request-button
添加到class 都是。这部分效果很好,但这是我遇到问题的地方。
我有一组 onClick
函数,这些函数在单击上述按钮之一时激活。这就是它们,
$(document).ready(function() {
$( ".request-button" ).click(function() {
$('#method').val("request");
});
$( "#estimate-button1" ).click(function() {
$('#method').val("estimate");
});
$( ".estimate-button" ).click(function() {
$('#method').val("estimate");
});
});
当我从按钮中动态删除 class estimate-button
,然后添加 class request-button
,然后单击如下所示的新按钮时,
<button type="submit" class="btn btn-default btn-submit request-button">
Send Request
</button>
不激活对应的onClick
功能。很简单,什么都不做。这是为什么?
您需要使用委托事件让它与现在和将来匹配选择器的元素一起工作。
将您的代码更改为:
$(document).ready(function() {
$('body').on('click', ".request-button", function() {
$('#method').val("request");
});
$('body').on('click', "#estimate-button1", function() {
$('#method').val("estimate");
});
$('body').on('click', ".estimate-button", function() {
$('#method').val("estimate");
});
});
使用jquery委托方法解决这个动态内容问题
$(document).ready(function() {
$( document). on('click', ".request-button" ,function() {
$('#method').val("request");
});
$( document). on('click',"#estimate-button1" ,function() {
$('#method').val("estimate");
});
$( document). on('click',".estimate-button",function() {
$('#method').val("estimate");
});
});
有一些与event delegation since you change the dom class name dynamically. Try using .on()函数相关的代码如下。
$( document ).on('click','.request-button',function() {
$('#method').val("request");
});