2010-11-28 40 views
0

こんにちは、私はカントを正しく機能させることができません、ポイントは、私がトグルアクションをトリガするまで、pareentsを上ることです。しかし、奇妙に機能し、検証されたタグが見つかったときには、真を返して再帰的な方法を完了しないようです。javascript function weirdly

unction dock(e){ 
    if(e.get(0).tagName != "BODY"){ 
     alert("current : "+e.get(0).tagName) 
     e.siblings(".splitter-bar").each(function(){ 
      alert("found sibling : "+$(this).get(0).tagName) 

      if($(this).length > 0){ 
       e.parent().trigger('toggleDock') 
       alert("triggered parent : "+e.parent().get(0).tagName) 
       return true 
      }  
     }) 
     if (dock(e.parent())){ 
      alert("validated parent : "+e.parent().get(0).tagName) 
      return true 
     } 
     alert("end dock(), current : "+e.get(0).tagName) 
    } 
    return false 
} 

$(".dockme").live('click', function(event) { 
    a = dock($(this)) 
    alert("dock returned :"+a) 
}); 

全体コード:

/* when the page is loaded */ 

$(ドキュメント).ready(関数(){

$("body").splitter({ 
    splitVertical: true, 
    outline: true, 
    sizeLeft: 30, minLeft: 0, maxLeft: 100, 
    resizeToWidth: true, 
    anchorToWindow: true, 
    dock: "left", 
    dockSpeed: 200, 
    cookie: "docksplitter" 
}); 
$("#a").splitter({ 
    splitHorizontal: true, 
    outline: true, 
    sizeBottom: 30, minBottom: 0, maxBottom: 30, 
    dock: "bottom", 
    dockSpeed: 200, 
    cookie: "docksplitter" 
}); 
$("#b").splitter({ 
    splitVertical: true, 
    sizeRight: 320, minRight: 0, maxRight: 320, 
    dock: "right", 
    dockSpeed: 200, 
    cookie: "docksplitter" 
}); 

function dock(e){ 
    if(e.get(0).tagName != "BODY"){ 
     alert("current : "+e.get(0).tagName) 
     e.siblings(".splitter-bar").each(function(){ 
      alert("found sibling : "+$(this).get(0).tagName) 

      if($(this).length > 0){ 
       e.parent().trigger('toggleDock') 
       alert("triggered parent : "+e.parent().get(0).tagName) 
       return true 
      }  
     }) 
     if (dock(e.parent())){ 
      alert("validated parent : "+e.parent().get(0).tagName) 
      return true 
     } 
     alert("end dock(), current : "+e.get(0).tagName) 
    } 
    return false 
} 

$(".dockme").live('click', function(event) { 
    a = dock($(this)) 
    alert("dock returned :"+a) 
}); 

}); HTML:e.siblings(...).each内部http://pastie.org/1329885

答えて

0

機能dockからtrueが返されません。

ので、代わりの

e.siblings(".splitter-bar").each(function(){ 
     alert("found sibling : "+$(this).get(0).tagName) 

     if($(this).length > 0){ 
      e.parent().trigger('toggleDock') 
      alert("triggered parent : "+e.parent().get(0).tagName) 
      return true 
     }  
    }) 

私はあなたのような何か言う必要があると思う:

var triggeredInSplitterBar = false; // ADDED 

    e.siblings(".splitter-bar").each(function(){ 
     alert("found sibling : "+$(this).get(0).tagName); 

     if($(this).length > 0){ 
      e.parent().trigger('toggleDock'); 
      alert("triggered parent : "+e.parent().get(0).tagName); 
      triggeredInSplitterBar = true; // CHANGED 
     } 
    }); 

    if (triggeredInSplitterBar) { return true; } // ADDED