2016-04-04 4 views
0

Я использую JQuery Изотоп и пытается изменить HTML-текст в классе сНу с changeMe, на основе, если/иначе:JQuery Изотоп, если/иначе проблемы с использованием IndexOf

var $chofval = $(".changeMe").html(filterAttr); 

// search if it contains these strings 
if ($chofval.indexOf("*") >= 0) { 
    $(".changeMe").html("All Apples"); 
} else if ($chofval.indexOf(".green") >= 0) { 
    $(".changeMe").html("Green Apples"); 
} 

Но это дает * и .green при нажатии кнопки. Любые догадки о том, где я ошибаюсь?

Полный код:

<script> 
function getHashFilter() { 
    // get filter=filterName 
    var matches = location.hash.match(/filter=([^&]+)/i); 
    var hashFilter = matches && matches[1]; 
    return hashFilter && decodeURIComponent(hashFilter); 
} 

$(function() { 
    var $container = $('.isotope'); 

    // bind filter button click 
    var $filterButtonGroup = $('.filter-button-group'); 
    $filterButtonGroup.on('click', 'button', function() { 
     var filterAttr = $(this).attr('data-filter'); 
     // set filter in hash 
     location.hash = 'filter=' + encodeURIComponent(filterAttr); 

     var $chofval = $(".changeMe").html(filterAttr); 

     // search if it contains these strings 
     if ($chofval.indexOf("*") >= 0) { 
      $(".changeMe").html("All Apples"); 
     } else if ($chofval.indexOf(".green") >= 0) { 
      $(".changeMe").html("Green Apples"); 
     } 
    }); 

    // bind filter on select change 
    $('.filters-select').on('change', function() { 
     // get filter value from option value 
     var filterValue = this.value; 
     // use filterFn if matches value 
     filterValue = filterFns[ filterValue ] || filterValue; 
     $container.isotope({ filter: filterValue }); 
    }); 

    var isIsotopeInit = false; 

    function onHashchange() { 
     var hashFilter = getHashFilter(); 
     if (!hashFilter && isIsotopeInit) { 
      return; 
     } 
     isIsotopeInit = true; 
     // filter isotope 
     $container.isotope({ 
      itemSelector: '.offer-type', 
      layoutMode: 'fitRows', 

      // use filterFns 
      filter: filterFns[ hashFilter ] || hashFilter 
     }); 
     // set selected class on button 
     if (hashFilter) { 
      $filterButtonGroup.find('.is-checked').removeClass('is-checked'); 
      $filterButtonGroup.find('[data-filter="' + hashFilter + '"]').addClass('is-checked'); 
     } 
    } 

    $(window).on('hashchange', onHashchange); 

    // trigger event handler to init Isotope 
    onHashchange(); 
}); 
//@ sourceURL=pen.js 
</script> 

ответ

0
if(filterAttr == "*") {  
    $(".Me").html("All Apples");  
} 
else if(filterAttr == ".green") { 
    $(".changeMe").html("Green Apples"); 
} 
0

Эта строка изменяет содержание «.changeMe» со значением filterAttr и не может retunr значения содержания объекта «.changeMe».

var $chofval = $(".changeMe").html(filterAttr); 

, если вы хотите, чтобы получить содержание «.changeMe» для оценки использования:

var $chofval = $(".changeMe").html(); 

Но если вы пытаетесь получить значение атрибута entitiy .changeMe определяется как filterAttr Применение:

var $chofval = $(".changeMe").attr(filterAttr); 

Или, наконец, если filterAttr реальное значение, чтобы проверить, использовать это значение в предложении, чтобы оценить его:

if(filterAttr.indexOf("*") >= 0){ 
    $(".changeMe").html("All Apples"); 
} else if(filterAttr.indexOf(".green") >= 0){ 
    $(".changeMe").html("Green Apples"); 
} 

См. JQuery Attr