【问题标题】:Html response from Jquery not working with javascript来自 Jquery 的 Html 响应不适用于 javascript
【发布时间】:2011-07-25 20:56:31
【问题描述】:

我找到了很多类似这个问题的帖子,但我认为我没有做错,因为我没有将 javascript 放在 ajax 调用的响应中。

基本上,ajax 返回放在 div 中的纯 html。这个 div 在我的页面内,并且该页面已经包含对 css 和 javascript 文件的引用。

在其中一个 javascript 文件中,我尝试将 ajax 调用返回的按钮渲染为使用 jquery ui 函数看起来不错,所以基本上我要做的就是这个

$(".ButtonClass").button();

这段代码在document.ready函数中,ajax返回的html包含所有按钮的“ButtonClass”。

.button() 适用于返回的 ajax html 之外的按钮,但不适用于 ajax 调用返回的元素。

我认为它应该可以工作,因为 css 样式已应用于结果,但我无法获得任何函数来处理结果,我再说一遍,我不返回 javascript 代码我在外部文件中有此代码,该文件在整页。

【问题讨论】:

标签: javascript jquery asp.net html ajax


【解决方案1】:

如果要为 AJAX 请求返回的元素启用按钮,应在收到响应时再次执行。

.button() 在调用时已选择的元素上执行 - 在发出 AJAX 请求之前调用时不包括 AJAX 元素。

请注意$(".ButtonClass") 也将包含以前的.ButtonClass 元素,因此它们将被转换为按钮两次。您只需要从 AJAX 响应中选择那些。

【讨论】:

    【解决方案2】:

    尝试调用

    $(".ButtonClass").button();
    

    在 ajax 回调中。

    【讨论】:

      【解决方案3】:

      我认为您需要在成功终止 ajax 调用时应用您的装饰器功能。 类似这样的事情:

      $('#myelement').load('script.php', function() {
      
         // Now the page has some more button to decorate:
         $(".ButtonClass .ugly").button().removeClass('ugly'); 
      
      });
      

      正如你所见,我在新按钮中添加了一个“丑陋”类,所以不要重新美化现有的已经很漂亮的按钮:)

      【讨论】:

        【解决方案4】:

        每次在应该是按钮的页面中引入新标记时,都必须调用 .button() 函数。您在 .ready() 上正确执行此操作,但您也应该在 ajax 调用的成功函数上执行此操作。

        【讨论】:

          【解决方案5】:

          您必须在填充 div 后初始化这些按钮。

          如果您的 div 存储在例如名为 $container 的 javascript 变量中,则在将此内容添加到页面后运行代码 $('.ButtonClass',$container).button()

          【讨论】:

            【解决方案6】:

            在您的 ajax 回调中,再次执行 $(".ButtonClass").button();

            【讨论】:

              猜你喜欢
              • 2022-12-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多