jQuery小部件内部的jQuery ajax选项卡


jQuery widget Inside jQuery ajax tabs

我在标签小部件上添加ajax加载站点的日期选择器时遇到了一些问题。我来解释一下我到目前为止所做的工作。

我首先做了所有的表格和东西,添加了一个日期选择器,并确保一切工作。然后我想创建一个选项卡小部件,它将加载带有表单的页面。虽然这确实工作,所有的$_post的东西也工作,jQuery似乎不工作。

是否有任何已知的原因,或者这可能是一个特定的问题与我有关?

如果需要代码来帮助解决这个问题,我会稍后编辑它,但现在我想知道这是否可能。

请记住,我对所有这些jQuery和AJAX的东西相对较新。提前感谢!

——编辑——

注意:我将脚本包含在每页的标题中。

标签页:

视图

<div id="tabs">
<ul>
    <li><a href="../tabs/bericht">Bericht</a></li>
    <li><a href="../main/initiative">Initiatief</a></li>
    <li><a href="../main/profile">Interesse</a></li>
</ul>
Java

$(document).ready(function(){
$( "#tabs" ).tabs({collapsible:true, active:false, effect:'ajax'});
});

加载页面:

$(document).ready(function(){
$('#date').datetimepicker({dateFormat: 'yy/mm/dd'});
var counter = 1;
$("#addButton").click(function () {
    if(counter>10){
            alert("Only 10 textboxes allow");
            return false;
    }   
    var newTextBoxDiv = $(document.createElement('div'))
         .attr("id", 'TextBoxDiv' + counter);
    newTextBoxDiv.after().html('<input type="text" name="requirements' + counter + '" id="requirements' + counter + '" value="" >&nbsp;<input type="text" name="requirementscount' + counter + '" id="requirementscount' + counter + '" value="" size="2"><br>');
    newTextBoxDiv.appendTo("#TextBoxesGroup");

    counter++;
 });
 $("#removeButton").click(function () {
if(counter==1){
      alert("No more textbox to remove");
      return false;
   }   
counter--;
    $("#TextBoxDiv" + counter).remove();
 });
});

您已经在文档就绪时使用了日期选择器函数,但是此时date元素还没有在DOM中注册,所以要使日期选择器正常工作,您必须调用$('#date')。datetimepicker({dateFormat: 'yy/mm/dd'})函数。

为此,您必须将tab回调方法"load"分类

$(document).ready(function(){
$( "#tabs" ).tabs({
load: function( event, ui ) {
    if($('#date').length>0){
                $('#date').datetimepicker({dateFormat: 'yy/mm/dd'});
    }
}
});
});

$(document).ready()仅在主页面内有效。

当您用AJAX加载新内容时,ready事件已经发生,因此AJAX加载的代码将立即触发。这意味着如果你的代码在它引用的html之前被加载,它将在html存在之前触发。

您可以使用以下几种方法:

将ajax加载的代码放在它在ajax加载的文件中引用的html之后

使用选项卡的加载回调来运行ajax内容的代码