1

我有以下代码运行良好:

    $field2.on("change", "#selector", function(){
        $field2.load("./index.php?show-options=true", { value: $(this).val() }, function() {
        $("#options").buttonset();
        });
    });     

它加载#optionsdiv 并将按钮应用于其中的锚标记。

有没有办法申报

$("#options").buttonset();

#options在加载div之前?

我浏览了 jQuery 文档但没有成功,也找到了这个答案:

将 jQuery UI 小部件应用于 ajax 加载的元素

我认为这可能会走上正轨,但还没有完全理解它,也没有设法实施。

感谢帮助,谢谢。

4

1 回答 1

0

执行以下操作:

$field2.on("change", "#selector", function(){
    $field2.load("./index.php?show-options=true", { value: $(this).val() }, function() {
      $field2.find("#options").buttonset();
    });
});

将 $field2 中的所有选项元素变成一个按钮集(一旦内容更新)。

或者,您可以将按钮设置为 dom 就绪:

$(function() { $("#options").buttonset(); });

更新

jQuery 选择器作用于 DOM 中的元素(除非给定上下文),如果元素不在 DOM 中,那么不幸的是 jQuery 将无法直接影响它。如果加载然后调用 buttonset 导致 FOUC(无样式内容的闪烁),您可以尝试以下操作:

$field2.on("change", "#selector", function() {
    $field2.empty();
    $.get("./index.php?show-options=true", { value: $(this).val() }, function(data) {
      var newContent = $(data);
      $("#options", newContent).buttonset();
      $field2.empty().append(newContent);
    });
});
于 2011-12-22T15:06:52.243 回答