即使该类存在,警告显示为false

时间:2014-08-10 19:05:35

标签: javascript jquery

我的下面的代码似乎没问题,但我想弄清楚为什么我的警报显示为false:

$.each(result, function(i,items) {
    alert($(this).parent().closest("#associated_order_chosen .chosen-drop ul").hasClass('chosen-results'));
    $(this).parent().find("#associated_order_chosen ul.chosen-results").append("<li id=\"items" + items.orderID + "\" class=\"active-result\" style=\"\"> " + items.orderunique + " </li>");
    //$select.append($("<option />").val(items.orderID).text(items.orderunique));
  });   
});

我尝试使用jQuery的find(),但每次它都返回false。难道我做错了什么?请告诉我。

#associated_order_chosen是主要的div

更新#1

这是HTML代码

<div class="controls">
    <select data-rel="chosen" data-placeholder="Please choose one" id="associated_order" class="passitem" style="width: 200px; display: none;" name="associated_order">
        <option value=""></option>
    </select><div class="chosen-container chosen-container-single" style="width: 200px;" title="" id="associated_order_chosen"><a tabindex="-1" class="chosen-single chosen-default"><span>Please choose one</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off"></div><ul class="chosen-results"></ul></div></div>
  </div>

1 个答案:

答案 0 :(得分:0)

您的代码中应该存在上下文问题。代码中的this引用items参数(,即迭代中的当前元素)而不是DOM元素。您应该将this对象缓存在each回调的上下文之外,而是使用缓存的值。

var $e = $(this);
$.each(result, function(i,items) {
    if ($e...) {
      // ...
    }  
});