给动态添加的button绑定点击事件

本文解决了一个常见问题:在使用jQuery动态添加元素后,如何正确地为这些元素绑定点击事件。通常,直接使用$(“xx”).click(function(){}

今天做课设的时候,通过$(“xx”).click(function(){})给动态添加的button绑定点击事件,发现点击按钮时并没有任何反应。
解决方法:

//动态添加元素
$.ajax({
url:,
type:,
success:function(data){
	$().html('<button class="answer"'>显示</button>)
}
})
//动态绑定
$("body").on('click','.answer',function(){
})
### 实现动态添加按钮并绑定点击事件 在WPF应用程序中,通过MVVM模式实现动态创建按钮并为其绑定点击事件的过程涉及多个方面。通常,在MVVM架构里不建议直接操作UI元素;然而,为了满足特定需求,可以通过`Command`机制间接处理。 对于动态创建Button控件而言,可以利用`ItemsControl`或类似的容器来承载这些按钮,并借助数据模板定义它们的外观和行为。下面是一个具体的例子: #### XAML布局文件配置 首先设置XAML部分,这里采用`ItemsControl`作为容器展示一组命令项,每项对应一个按钮实例。 ```xml <Window x:Class="DynamicButtons.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <!-- 定义用于容纳动态生成按钮的区域 --> <ItemsControl ItemsSource="{Binding Buttons}"> <ItemsControl.ItemTemplate> <DataTemplate> <Button Content="{Binding Name}" Command="{Binding ClickCommand}"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> <!-- 添加新按钮的操作按钮 --> <Button Content="Add Button" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="75" Height="23" Command="{Binding AddButtonClickCommand}"/> </Grid> </Window> ``` 这段代码设置了窗口内的基本结构,其中包含了用来显示所有已创建按钮的`ItemsControl`组件以及触发新增按钮逻辑的单独按钮[^1]。 #### ViewModel类设计 接下来编写ViewModel层的相关逻辑,负责管理视图状态的变化及响应用户的交互动作。 ```csharp using System.Collections.ObjectModel; using GalaSoft.MvvmLight.Command; public class MainViewModel : INotifyPropertyChanged { private ObservableCollection<ButtonModel> _buttons = new(); public event PropertyChangedEventHandler? PropertyChanged; /// <summary> /// Gets the collection of buttons. /// </summary> public ObservableCollection<ButtonModel> Buttons => _buttons; /// <summary> /// Adds a new button to the list with specified name and action command. /// </summary> public RelayCommand<string>? AddButtonClickCommand { get; } public MainViewModel() { // Initialize commands when creating view model instance AddButtonClickCommand = new RelayCommand<string>(name => { var clickAction = new RelayCommand(() => MessageBox.Show($"Clicked on '{name}'")); Buttons.Add(new ButtonModel(name, clickAction)); }); } } ``` 此段实现了`MainViewModel`类,它持有按钮集合(`_buttons`)并通过属性公开给View访问。每当调用`AddButtonClickCommand`时就会向该列表追加一个新的`ButtonModel`对象,后者封装了实际要呈现的文字标签及其关联的动作指令。 #### Model类定义 最后还需要定义表示单个按钮的数据模型——即`ButtonModel`类,以便于更清晰地区分业务逻辑与表现形式之间的关系。 ```csharp /// <summary> /// Represents an individual button within the application's interface. /// </summary> public class ButtonModel { public string Name { get; set; } // 显示名称 public ICommand ClickCommand { get; set;} // 点击后的执行命令 public ButtonModel(string name, ICommand cmd) { this.Name = name; this.ClickCommand = cmd; } } ``` 上述做法遵循了MVVM的最佳实践原则,使得程序易于维护的同时也提高了灵活性。当用户按下“Add Button”按钮后,会弹出对话框提示成功添加了一个新的按钮,并且每次点击都会显示出对应的文本消息[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值