jQuery i-Check插件同一个类名 - 检索两个不同的值

时间:2015-03-02 20:10:42

标签: javascript jquery icheck

我正在使用I-check插件,我正在尝试从代表两个不同字段的两个输入字段中检索值。

HTML:

<label><input id="hoteltype" class="i-check" type="checkbox" name="hotel" value="3"/>Hotel</label>

 <label><input id="starrating" class="i-check" type="checkbox" name="1" value="1.0" />1 star</label>

jQuery.ajax

<script>
            $('.i-check input').on('ifChanged', function(event){
                $('.searchtable').addClass('hide');
                $('.spinner').removeClass('hide');

                $.ajax({
                    type: 'GET',
                    data: {'name':'<?php echo strval($_GET['name']); ?>','arrival':'<?php echo strval($_GET['arrival']); ?>','departure':'<?php echo   strval($_GET['departure']);?>','guests':'<?php echo strval($_GET['guests']);?>','propertyCategory':$(".i-check input[type='checkbox']:checked").val(),'minStarRating':$(".i-check input[type='checkbox']:checked").val(),'order_by':$('#order_by').val()},
                    url: '<?php echo $baseUrl ?>/hotels/hotelFilterResult.php',


                    success: function (data) {
                    //alert('data loaded succesfully');
                        alert(this.url);

                        $('.searchtable').replaceWith(data);
                        $('.spinner').addClass('hide');
                        $('.searchtable').removeClass('hide');

                    },
                    error: function (xhr) {
                        alert('data not loaded');
                        }
                    });

           });

问题不在于检索值,问题是要分离值,因为我无法更改类名。

我通过

来检索价值
'minStarRating':$(".i-check input[type='checkbox']:checked").val()
'hoteltype':$(".i-check input[type='checkbox']:checked").val()

现在的问题是我在两个不同的表示中得到相同的值。

因此,例如,如果选择星级评级 - 我在这里得到的值都是1.0,但实际上它应该在hoteltype中为空。问题在于标识符“.i-check”。我试图向两者添加一个ID类,所以一个人有id =“starrating”而另一个id =“hoteltype”,然后这样做:

 'minStarRating':$(".i-check#starrating input[type='checkbox']:checked").val()
'hoteltype':$(".i-check#hoteltype input[type='checkbox']:checked").val()

这似乎不适用于I-Check插件,我该如何解决这个问题,以便将两个值分开?

1 个答案:

答案 0 :(得分:2)

如果在id和元素名称之间留出空格(在本例中为input),浏览器会认为input元素是id的后代元素所以我认为最好不要在这两者之间留出空间。 More info about ID selectors。以下是一些可用于查找相关值的替代方案。

&#13;
&#13;
$("label").on("click", "input:checkbox", function() {
  
    var result =   'minStarRating ' + $("input[type='checkbox']:checked#starrating").val();
   var result2 =  'hoteltype ' + $("input[type='checkbox']:checked#hoteltype").val();
    
  // same as above but in different order
 // var result =   'minStarRating ' + $("#starrating:input[type='checkbox']:checked").val();
// var result2 =  'hoteltype ' + $("#hoteltype:input[type='checkbox']:checked").val();
  
  //the below works too but it's longer, it uses also class names
//var result =   'minStarRating ' + $(".i-check#starrating:input[type='checkbox']:checked").val();
//var result2 =  'hoteltype ' + $(".i-check#hoteltype:input[type='checkbox']:checked").val();
  
  $("#result").text(result);
  
  $("#result2").text(result2);
  

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>
  <input id="hoteltype" class="i-check" type="checkbox" name="hotel" value="3" />Hotel</label>

<label>
  <input id="starrating" class="i-check" type="checkbox" name="1" value="1.0" />1 star</label>


<div id="result"></div>

<div id="result2"></div>
&#13;
&#13;
&#13;

我不确定我是否回答了你的问题,因为我之前没有使用过iCheck(虽然它看起来非常有趣,插件风格很棒),但我希望这有点帮助: - )