javascript - Jquery $ ('class' ,这个)选择器不起作用

标签 javascript jquery jquery-selectors this

你好,我是 jquery 的新手,我无法使用它。

我正在尝试使用 .click 函数转换一个 div:

JQUERY

$(document).ready(function(){
$('#show').click(function(){
    $('.element', this).toggleClass('hidden');
    $(".change-width", this).toggleClass(' col-md-12 ');
    $(".change-width", this).toggleClass('col-md-3');
    $(".blok", this).toggleClass('same-height').toggleClass('h100');
    if($(this).hasClass('SeeMore2')){
        $(this).html('<i class="fa fa-angle-double-left" aria-hidden="true"></i> Terug naar overzicht');
    } else {
        $(this).html('Lees meer <i class="fa fa-angle-double-right" aria-hidden="true"></i>');
    }
});
});

HTML:

<div class="blokk change-width col-md-3 ">
 <div class="blok same-height ">

   <i class="fa fa-user-md fa-4x" aria-hidden="true"></i>

   <h3>Hoofdpijn</h3>
   <img class="element hidden" src="../images/behandelingen/headache.jpg">

   <p>text</p>

   <p class="element hidden">text</p>
 </div>
 <button id="show" onclick="fastScroll(document.getElementById('navigationz'))">Lees meer <i class="fa fa-angle-double-right" aria-hidden="true"></i></button>
</div>

它在没有 ,this 选择器的情况下也能正常工作,但没有 ,this 它将选择所有我显然不想要的 div。

谁能告诉我我做错了什么?

提前致谢:)

最佳答案

我不相信 $('.element', this) 是有效的语法。

或者,您应该将 DOM 选择器定位为相对于 $(this),就像树遍历一样。例如,在您的情况下,$(this) 引用 ID 为 show 的按钮(因为它附加到点击处理程序)。

因此,要访问.change-width,您需要访问$(this) 的父级。换句话说,替换

 $(".change-width", this).toggleClass(' col-md-12 ');

 $(this).parent(".change-width").toggleClass(' col-md-12 ');

再举一个例子,如果你想访问.blok,找到那个元素和$(this)之间的关系。 .blockthis 元素的前一个兄弟元素。因此替换

$(".blok", this).toggleClass('same-height').toggleClass('h100');

$(this).prev(".blok").toggleClass('same-height').toggleClass('h100');

最后,您想要访问 .element。我看到您有 2 个 .element,并且它们都是 .blok 的子级。换句话说,.element$(this) 的前一个兄弟元素的子元素。因此替换

$('.element', this).toggleClass('hidden');

$(this).prev(".blok").children(".element").toggleClass('hidden');

这里有一些关于这些函数的 jQuery 文档: https://api.jquery.com/category/traversing/tree-traversal/

关于javascript - Jquery $ ('class' ,这个)选择器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140597/

相关文章:

javascript - 动态添加计数器单位(K、L、M)

javascript - 针对每个类并返回一个字符串和类

jquery jscrollpane插件错误

jquery - 类更改后单击事件不起作用

javascript - jQuery 标签 'for' 属性选择器

jquery - 检查使用 jquery 选择文本框中的值

javascript - 绑定(bind)点击时重用代码

javascript - ReactJS,在另一个模态之上显示模态

javascript - 如何在 Razor 页面中有条件地绘制 DataTables 列

jquery - 如何将默认的 css 属性解析为内联样式属性