2014-06-20 72 views
0

這對你們來說可能非常簡單,但是因爲我在學習骨幹和jquery,所以我很難弄明白這一點。顯示/隱藏div中的按鈕點擊骨幹網

當頁面第一次加載時,我希望它只顯示一個div(幾個),並在單擊Yes/No按鈕時開始顯示其他div。我還使用Twitter的引導的UI

這就是我對骨幹觀點:

App.Views.Question = Backbone.View.extend({ 
    tagName: 'div', 

    className: 'question-box hide', 

    template: template('questionTemplate'), 

    events: { 

    }, 

    initialize: function() { 
     this.model.on('reset', this.render, this); 
    }, 

    render: function() { 
     var editQuestionnaire = this.model.toJSON(); 
     console.log(this.$el.html(editQuestionnaire)); 
     this.$el.html(this.template(editQuestionnaire)); 
     //console.log(this.model); 
     return this; 
    } 
}); 

正如你所看到的,我設置的className爲「問題盒隱藏」,但它隱藏所有divs。

這裏是我的index.html

<div class="bs-docs-example bs-docs-question"> 
     <span class="badge badge-success"><%= question_id %></span> 
     <div class="span3 question-div"> 
      <h4 class="text-info"> 
       <%= question %> 
      </h4> 
      <div class="hs<%= question_id %>"></div> 
      <script type="text/javascript"> 
       var id = <%= question_id %>; 
       var yes_id = <%= yes_question_id %>; 
       var no_id = <%= no_question_id %>; 

       if(id == 1) 
       { 
        $('div .question-box').attr('class', 'question-box show'); 
       } 
       if(id != 8 && id != 9 && id != 6) 
       { 
        $('.hs<%= question_id %>') 
         .append('<button type="button" class="btn btn-primary">Yes </button>') 
         .append('<button type="button" class="btn btn-warning">No</button>'); 
       }   

       else if(id == 6) 
       { 
        $('.hs<%= question_id %>') 
         .append('<button type="button" class="btn btn-primary">OK </button>') 
         .append('<button type="button" class="btn btn-warning">Cancel</button>'); 
       }   

      </script> 

      <span class="span5"></span> 


     <div class="span4"></div> 
     </div> 

該項目是排序的條件分支網站。所以,第一個盒子總是必須出現。然後根據回答的問題,應該出現一個不同的方框。 (我想我知道如何做到這一點,我想我可以創建一個將question_id作爲參數的函數,然後顯示該框,我可以在按鈕中放置onclick選項,儘管如此,我還沒有嘗試過) 我非常感謝你的幫助。

謝謝。

回答

0

我認爲你真的可以避免HTML文件內的js代碼,嘗試在你的視圖內部做到這一點,它使用主幹更有意義。

我完全不明白你的意思。但我有一些提示可以幫助你。 如果你想單擊一個按鈕時顯示一個元素,你可以做這樣的事情。

//Inside your view 
events: 
    "click #buton":"showElement" 

showElement:-> 
    @$("#div").addClass("someClassToShowTheDiv") 

也許在你的代碼中的問題都可以在這裏: $(「DIV。提問框」)ATTR(「類」,「問題框顯示」)。

正確的方法是: $('div .question-box')。addClass('question-box show');

希望它有幫助!

+0

有9個問題,每個問題都有自己的div。按鈕也應該在div內。然後,當單擊是時,它應該顯示另一個基於存儲在主幹集合中的yes_id的問題。所以,爲了點擊事件觸發,我應該把按鈕放在index.html中,對吧?但我不明白如果單擊是或否,骨幹視圖將知道顯示哪個div。 – user1828605

+0

是的,你需要在index.html裏面有你的按鈕。當你點擊'是'按鈕時,你會告訴div應該使用jquery顯示。 – rcarvalho

+0

該按鈕有效,但我的div仍然沒有做我想做的事。它顯示全部或不顯示。我有另一個視圖App.View.Questions裏面有this.collection.each(this.addOne,this)裏面的渲染函數。我認爲這是從我上面的其他觀點加載所有的問題。我如何只能在骨幹中獲取一個收藏品? – user1828605

相關問題