尝试在$(this)锚标记上使用addClass时未定义

时间:2016-09-28 19:28:20

标签: jquery addclass attr prop



function showImage(imageSrc) {
            
            $('a.slideTabLinkBlock').removeClass('active');
            alert($(this).attr('class'));
            $(this).addClass('active');

        }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="slideTabLinkBlock" onclick="showImage('<?php echo $image_src; ?>');">Link</a>
&#13;
&#13;
&#13;

我试图添加一个类&#34;活跃&#34;点击链接时:

<a class="slideTabLinkBlock" onclick="showImage('<?php echo $image_src; ?>');"></a>

function showImage(imageSrc) {

    $('a.slideTabLinkBlock').removeClass('active');
    alert($(this).attr('class'));
    $(this).addClass('active');

}

当我提醒$(this).attr(&#39; class&#39;)时,它会显示&#34; undefined&#34;。

为什么我无法使用$(this)定位锚标记?

如何添加&#34;有效&#34;类的链接被点击?

3 个答案:

答案 0 :(得分:0)

使用适当的事件处理程序时,您可以存储$image_src变量,例如在data - 属性中。

&#13;
&#13;
$('.slideTabLinkBlock').on('click', function() {

  var $this = $(this),
    imgSrc = $this.data('imgsrc');

  $('a.slideTabLinkBlock').removeClass('active');
  $this.addClass('active');
   alert($(this).attr('class'));

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="slideTabLinkBlock" data-imgsrc="<?php echo $image_src; ?>">Link</a>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

因为您没有提供任何其他代码,所以我不知道您在锚标记中使用内联函数的原因。 因为你通常可以这样做:

$('a.slideTabLinkBlock').on('click',function(){
    var className =  $(this).attr('class');

    alert(className);
})

答案 2 :(得分:-3)

$(this)正在引用Window对象,因此不是您期望的对象。 您可以将“this”传递给内联JS调用中的函数,并创建参数的jQuery元素。请参阅代码段:

function showImage(element, imageSrc) {

            $('a.slideTabLinkBlock').removeClass('active');
            alert($(element).attr('class'));
            $(element).addClass('active');

        }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="slideTabLinkBlock" onclick="showImage(this, '<?php echo $image_src; ?>');">Link</a>