Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使div内的所有链接调用相同的函数?_Javascript_Jquery - Fatal编程技术网

Javascript 使div内的所有链接调用相同的函数?

Javascript 使div内的所有链接调用相同的函数?,javascript,jquery,Javascript,Jquery,我正在尝试创建一个显示警报的通知区域 return this.each(function() { jQuery('<div class="' + o['className'] + '">' + o.msg + ' + '<a href="#" onclick="$(this).parent().remove(); dismiss(' + o["id"] + ');">X</a>' + '</div>') .append

我正在尝试创建一个显示警报的通知区域

return this.each(function() {
  jQuery('<div class="' + o['className'] + '">' + o.msg + ' +
         '<a href="#" onclick="$(this).parent().remove(); dismiss(' + o["id"] + ');">X</a>' + '</div>')
    .appendTo(this);
});
返回此.each(函数(){
jQuery(''+o.msg+'+
'' + '')
.附于(本);
});
这只需要从数据库中提取一条消息,并将其显示给用户。如果用户单击X,它将调用disclesh(),这将标记它为正在数据库中读取


问题是,如果消息本身包含指向另一个页面或外部站点的链接,我还想在用户离开页面之前调用dismise()。是否需要修改此javascript以获取所有
a
元素(X和消息中出现的任何链接)并更改onclick以调用函数?

代码示例有点模糊,这
o
来自何方?它是全局的还是特定于部门的

无论如何,你可能会发现这是有用的。初始化后,它将应用于与选择器匹配的所有未来新元素。您只需要有一些父元素,它将包含所有带有消息和链接的div

$('#someDivId a').live('click', function() {
    // Do your thing here as you did in `onclick` attribute.
};

只需在onload期间执行一次即可。

您可以稍微重新排列代码并使用,如下所示:

return this.each(function() {
  var id = o["id"];
  jQuery('<div />', { 'class': o['className'], html: o.msg })
   .append('<a href="#">X</a>')
   .delegate('a','click', function() { $(this).parent().remove(); dismiss(id); })
   .appendTo(this);
});
返回此.each(函数(){
变量id=o[“id”];
jQuery(“”,{'class':o['className'],html:o.msg})
.append(“”)
.delegate('a','click',function(){$(this).parent().remove();dismise(id);})
.附于(本);
});

这使用了jQuery1.4中添加的新功能,使创建更干净(更快!文档片段缓存!)。它所做的不是在X上附加一个onclick,而是监听来自任何
锚定的点击。

@Brandon-听起来你有一个古怪的角色,你是在谈论
X
部分还是
o.msg
部分?最糟糕的情况是,您可以删除
,text:o.msg
并在链中添加
.html(o.msg)
。o.msg部分。实际上,我给了X链接一个类来将它与消息链接分开(这样我就可以将它向右浮动),现在o.msg部分工作了。我真的不知道为什么。然而,我认为这不起作用。它在没有点击的情况下生成了链接。@Brandon-你不会在html中看到
onclick
,它是一个事件处理程序,在代理函数中放置
alert(id)
,看到它被点击。哦,我还必须将
text:o.msg
更改为
html:
。它也不喜欢
类:
语法。@Brandon-Woops,任何不是jQuery调用的东西(例如
'class'
)都需要引号,更新:)