【问题标题】:Firing Javascript on dynamic <div> load在动态 <div> 加载时触发 Javascript
【发布时间】:2011-01-19 22:38:09
【问题描述】:

我正在为安装 AJAXchat 添加页面标题通知。我正在使用一个名为 jquery-titlealerts 的 jQuery 插件来实现这一点。如果我在 onclick 事件上分配方法,它会正常工作并更改页面标题。但这并不符合我的需要。每次创建新 div 时,我都需要它来更改页面标题。这是每次有人提交消息时动态创建一个新div的js:

return '<div id="'
+ this.getMessageDocumentID(messageID)
+ '" class="'
+ rowClass
+ '">'
+ this.getDeletionLink(messageID, userID, userRole, channelID)
+ dateTime
+ '<span class="'
+ userClass
+ '"'
+ this.getChatListUserNameTitle(userID, userName, userRole, ip)
+ ' dir="'
+ this.baseDirection
+ '" onclick="$.titleAlert(\'Error!\');">'
+ userName
+ '</span>'
+ colon
+ this.replaceText(messageText)
+ '</div><script>$.titleAlert(\'Error!\');</script>';
return

如您所见,我已尝试创建一个 &lt;script&gt; 块以在 div 下方加载 - 确实如此,但由于某种原因并未更改文档标题。如果您单击聊天中生成的消息,它将起作用,因为它是从 onclick 事件中触发的。 我不确定在加载每个 div 时还有什么方法可以让它工作。

【问题讨论】:

  • 你对我的眼睛做了什么?!
  • 添加div的javascript代码不能直接调用titleAlert函数有什么原因吗?
  • Dante617 是什么意思? div 不能做 onLoad 的

标签: javascript jquery jquery-plugins jquery-events


【解决方案1】:

在您调用具有此return 语句的函数的地方,在调用该函数后,您应该更新页面标题。如果您不想那样做,您可以使用returns 您的新 Div 内容在返回之前更新页面标题的功能。

或者,考虑使用带有complete(或success)回调的jQuery 的$.ajax() 方法来进行标题修改。老实说,如果要让我解决这个问题,这将是我的首选方法。

您可以阅读有关$.ajax() here 的所有信息。

【讨论】:

    【解决方案2】:

    出于明显的安全原因,以编程方式插入脚本块在现代浏览器中几乎无法使用。

    相反,让接收此 HTML 的脚本执行警报,可能基于 HTML 的部分内容;比如说,一个隐藏的 span,其中包含要拉出并用作标题的消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多