更正$(this)== $(' .element')

时间:2015-09-28 08:56:09

标签: jquery

例如,我有一些元素

<div class="elem1"></div>
<div class="elem2"></div>

和1个jquery函数

(function( $ ){
    $.fn.myFunction = function() { 

         if ( $(this) == $('.elem1') ) { /* Condition 1 run */ }
         else if ( $(this) == $('.elem2') ) { /* Condition 2 run */ }

    }
})( jQuery );


$(document).ready(function() {
    $('.elem1').myFunction() ;
});

我需要在.elem1上设置此功能,条件1运行,否则运行条件2。

$(this) == $('.elem1')$(this) == $('.elem2')不符合逻辑,

那么你们建议我做什么(纠正$(this) == $('element')

4 个答案:

答案 0 :(得分:3)

您可以使用.is()来检查

(function ($) {
    $.fn.myFunction = function () {

        if ($(this).is('.elem1')) { /* Condition 1 run */
        } else if ($(this).is('.elem2')) { /* Condition 2 run */
        }

    }
})(jQuery);

$(selector)每次调用时都会返回一个新的jQuery对象,因此检查对象相等性是不匹配的

注意:@Bhushan在his answer中指出,如果你只是检查一个班级是否存在,那么使用.hasClass()会更好

答案 1 :(得分:1)

试试这个:您可以使用.hasClass()

(function( $ ){
    $.fn.myFunction = function() { 

         if ( $(this).hasClass('elem1') ) { /* Condition 1 run */ }
         else if ( $(this).hasClass('elem2') ) { /* Condition 2 run */ }

    }
})( jQuery );

答案 2 :(得分:0)

您也可以将参数传递给函数

(function($){

$.fn.myFunction = function(var x) { 

     if (x=='elem1')  { /* Condition 1 run */ }
     else if ( x=='elem2')  { /* Condition 2 run */ }

}})(jQuery );

答案 3 :(得分:0)

您可以检查他们的班级ID,但您必须知道多个元素可以拥有相同的班级。

if ( $(this).attr('id') == $(".elem1").attr('id') ) { /**/ }
if ( $(this).attr('class') == $(".elem1").attr('class') ) { /**/ }