2012-09-26 39 views
0

我有這樣一個列表視圖以下內容:淘汰賽,jQuery Mobile的列表視圖 - 獲取ID上點擊

   <ul data-inset="true" data-filter="true" data-bind="foreach: growers" data-role="listview" id="ulGrowerList"> 
      <li><a data-bind="click: $parent.setSelectedClassToGrowerList, attr: {id: growerId}"><span data-bind="text: growerName, attr: {id: growerId}, click: $parent.setSelectedClassToGrowerList" /></a></li> 
     </ul> 

我setSelectedClassToGrowerList看起來是這樣的:

self.setSelectedClassToGrowerList = function (item, event) { 

    $(ulGrowerList).closest('ul').find('a').removeClass('highlight'); 
    $(ulGrowerList).closest('ul').find('.selected').remove(); 

    $(event.target).toggleClass("highlight"); 
    if ($(event.target).hasClass("highlight")) { 
     $(event.target).append("<span class='selected'>Selected</span>"); 
     //console.log(event.target.id); 
     replaceByValue('GrowerID', event.target.id); 
     postjson(); 

     //update GrowerInfo 
     $.getJSON("Grower/GetGrower", function (allData) { 
     self.GrowerName(allData.Name); 
     self.GrowerCompany(allData.CompanyName); 
     self.GrowerAddress(allData.Address); 
     self.ShowGrowerCompany(allData.ShowCompany); 
     self.GrowerID(allData.ID); 
     }); 

    } else { 
     $(event.target).find(".selected").remove(); 
    } 

正如你看到的,我結合setSelectedClassToGrowerList到兩者和標籤,因爲點擊文本(跨度)沒有采取所需的操作。現在,問題是,當我單擊文本本身時,「選定」文本不會顯示。我正在查找的功能與此類似: http://jsfiddle.net/czqXm/1/除了能夠選擇多個已在工作的項目。

我使用knockout和jquery mobile越多,我越傾向於認爲它們不是最好的組合(嘆息!)。

+0

但是,究竟是什麼,是所遇問題? –

+0

問題是,當我單擊文本時,「選定」文本未顯示。 – WhatsInAName

回答

2

好的。我認爲這是一個重複處理程序問題。

發生了什麼事是,當你單擊該文本,因爲它在SPAN一個單獨的單擊處理程序,的點擊處理程序,然後在事實上兩個click事件正在註冊...... 第一個使「選定」出現,第二個使其再次消失。

我想你也許可以簡化您結合這個

<li><a data-bind="click: $parent.setSelectedClassToGrowerList, 
        attr: {id: growerId}, 
        text: growerName"></a></li> 

...但是看看this fiddle

+0

謝謝,不知道那個文本可以綁定到的標籤!接受爲答案。 – WhatsInAName