2015-02-05 3 views
0

Это мой HTML код:Как переключить только элемент с кликом при использовании сценариев jsrender?

<li> 
    <div class="search-res-title clearfix"> 
      <h3> <a href="food-details.html?item={{>_source.name}}" > {{>_source.name}}</a> </h3> <span><i class="badge">{{>_source.items.length}}</i>Places</span> 
      </div> 

     <ul class="sr-itemlist"> 
     {{for _source.items}} 
       <li> <a href="restaurant-page.html?restaurant={{>hotelDetails.key}}" > {{>hotelDetails.name}}</a> <i class="badge">{{>hotelDetails.misc.rating}}</i> </li> 
     {{if #index ==2}} 
     </ul> 
     <div class="item-serh-more test{{:#index}} extra-list clearfix" > 
      <ul class="sr-itemlist"> 
     {{/if}} 
     {{/for}} 
      </ul> 
     {{if _source.items.length >=2 }} 
     </div> 
     {{/if}} 
     <a href="#" class="loc-showbtn" refVal="{{:#index}}">more<span class="caret"></span></a> 
    </li> 
</script> 

Теперь это мой JQuery код

var showMore = function() { 
$('body').on('click', '.loc-showbtn', function() { 
    $('.item-serh-more').toggle(); 
    }); 
    }; 

Что я хочу: Когда я нажимаю ".loc-showbtn" я хочу отдельного элемента открыть.

Что происходит сейчас: Когда я нажимаю ".loc-showbtn", все элементы с классом "$('.item-serh-more').toggle();" открывает

Я попытался дать порядковый номер цикла jsrender к классу ".item-serh-more" Но, кажется, нет.. рабочий.

+1

Вместо использования JsRender и затем делать манипуляции DOM, вы могли бы рассмотреть возможность использования более подхода управляемых данных, путем добавления привязки данных к JsRender - с JsViews. Этот пример может дать вам несколько идей: http://www.jsviews.com/#samples/tag-controls/range. BTW тег {{range}} также можно использовать только с JsRender: http://www.jsviews.com/#samples/jsr/tags/extend-for. – BorisMoore

ответ

2

Подразделение, требуемое для переключения, является предыдущим братом щелкнутого якоря. Вы можете просто использовать .prev() с Clicked элементами контекста this целевым его:

$('body').on('click', '.loc-showbtn', function() { 
    $(this).prev().toggle(); 
}); 
+0

Спасибо, Милиндс. –

2

проблема заключается в селекторе $('.item-serh-more') используется в обработчике щелчка, он выбирает все элементы с классом item-serh-more но то, что вам нужно, это item-serh-more элемента, который предыдущие родственный нажатой loc-showbtn элемент.

var showMore = function() { 
    $('body').on('click', '.loc-showbtn', function() { 
     $(this).prev('.item-serh-more').toggle(); 
    }); 
}; 
+0

Спасибо, Арун, кажется, работает отлично. –

 Смежные вопросы

  • Нет связанных вопросов^_^