如何获取hasClass()的父级?

时间:2017-02-16 11:03:00

标签: jquery

我只需要获取我在hasClass()找到的类的父类,但它不起作用。



if ($('.test div').hasClass('has-error')) {
  console.log($(this).parent().className)
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>
  <div class='test2'>
    <div class='has-error'></div>
  </div>
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

您的代码存在的问题是this将引用window,因为您不在元素的范围内。

hasClass在这里也有点多余,因为您可以直接选择具有给定类的元素,然后执行您的逻辑。

最后,请注意className不是jQuery对象的有效属性。据推测attr('class')就是你所需要的。试试这个:

var className = $('.test div.has-error').parent().attr('class');
console.log(className)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test">
  <div class="test2">
    <div class="has-error"></div>
  </div>
</div>

答案 1 :(得分:1)

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>
  <div class='test2'>
    <div class='has-error'>

    </div>
  </div>
</div>
&#13;
 public static String doLogin(String loginMail, String loginPassword) {

            //Logging Retrofit
            final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("###URLTOAPICALL###")
                    .client(client)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

            APIService service = retrofit.create(APIService.class);
            Call<JsonElement> call = service.doLogin(loginMail, loginPassword);

            try {
                Response response = call.execute();
                if (response.isSuccessful()) {

                    // do your stuff and 

                    return yourString;

                }
            }catch (IOException ex) {
                ex.printStackTrace();
            }
} 
&#13;
&#13;
&#13;

像这样使用

答案 2 :(得分:1)

您可以使用filter返回带有has-class的元素,然后获取其父级的类。

&#13;
&#13;
var c = $('.test div').filter(function() {
  return $(this).hasClass('has-error')
}).parent().attr('class')

console.log(c)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='test'>
  <div class='test2'>
    <div class='has-error'>

    </div>
  </div>
</div>
&#13;
&#13;
&#13;