gpt4 book ai didi

jquery - 重写 JQuery .click() 函数

转载 作者:行者123 更新时间:2023-12-01 00:16:50 25 4
gpt4 key购买 nike

我在使用 jquery click 函数时遇到了一些问题,下面是我的代码布局的一部分:

<td id="01" class="day-main-diary">
<div title="sdfsdf" class="diary-event ui-corner-all">
<span id="delete"></span>
<div class="diary-event-title ui-corner-all">
sdfsdf
</div>
<div class="diary-event-body ui-corner-all">
<p class="hyphenate">sdfsdf</p>
</div>
</div>
</td>

标题、diary-event-title中的文本和diary-event-body中的文本都是动态生成的,并且“day-main-diary”类绑定(bind)了一个点击函数(实际代码在js文件中)是:

$('.day-main-diary').click(function(){
// Code is here
}

我正在寻找一种方法,可以在 ID 为“删除”的跨度上识别点击事件,除其他外,我尝试过

$('.day-main-diary #delete').click(function(){

$('#delete').click(function(){

但是,每次它都会完全忽略此事件,并且始终调用当天的主日记点击事件。

有人能帮我吗?我将永远心怀感激-马特

最佳答案

首先,请记住页面上只能有一个#delete ID。如果有多个,就会遇到问题,应该将其设为类.delete

如果页面加载(动态)时不存在#delete元素,您可以使用.live(),它将负责处理事件无论您何时添加该元素。

$('#delete').live('click', function(){
...
});

但请注意,这仍然也会触发 .day-main-diary 上的事件。

另一种选择是在 .day-main-diary 上调用 .delegate() (只要页面加载时它就在那里)。这与 .live() 类似,但更加本地化。

$('.day-main-diary').delegate('#delete', 'click', function() {
...
});

这也会触发 .day-main-diary 上的点击。不确定预期的行为是什么。

另一种选择是在 .day-main-diary 点击处理程序中测试点击的 e.target。如果是#delete,则做一件事,如果不是,则做另一件事。

$('.day-main-diary').click(function( e ) {
if(e.target.id === 'delete') {
// run code for the delete button
} else {
// do something else
}
});

否则,仍然假设#delete是动态的,您可以在创建它时绑定(bind).click()

$('<span id="delete">delete</span>').click(function( e ) {
// your code
// uncomment the line below if you don't want the
// click event to fire on .day-main-diary as well
// e.stopPropagation()
})
.appendTo('day-main-diary');

关于jquery - 重写 JQuery .click() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com