addClass不会将类添加到元素

时间:2020-01-21 01:18:31

标签: jquery

我想在单击#filter-button元素时向我的元素ID #block_filters添加一个类.filter_open,所以这是我的HTML:

public function index(Request $request)
{   
     $id= $request->user()->id;
     $user = User::find($id);
     //$id = Auth::user()->id;
     //$request = DB::table('users')->where('id', $id)->first();
     //dd($id); exit;

     return view('frontend.balance.index',compact('user'));
}

这是我的.js

<a id="filter-button" >Show filters</a>
<div class="block_content" id="block_filters" >


</div>

但是它不起作用,我找不到原因。

感谢您的帮助

编辑:

我也在测试这种方式,但是没有运气

function open_filters() {
  var f_toggle = $('#filter-button');
  var f_content = $('#block_filters');
  f_toggle.on('click', function(e) {
    f_content.addClass('filter_open');
    e.stopPropagation();
    e.preventDefault();
  });

}

2 个答案:

答案 0 :(得分:1)

您可以尝试这种方式。阅读下面的链接以更好地了解

Event binding on dynamically created elements?

var result = await api.Get<List<Achievement>>(path);
foreach (Achievement achievement in result) 
{ 
    Console.WriteLine(achievement.Name);
}
$(document).ready(function() { open_filters(); });

function open_filters() {
  var f_toggle = $(document).find('#filter-button');
  var f_content = $(document).find('#block_filters');
  
  f_toggle.on('click', function(e) {
    f_content.addClass('filter_open');
    e.stopPropagation();
    e.preventDefault();
  });

}
.filter_open{
 background-color:red;
}

答案 1 :(得分:0)

只需在脚本中添加preventDefault即可避免浏览器刷新,请参见下面的代码

$('#filter-button').click(function (e) {
    e.preventDefault()
    $('#block_filters').addClass('filter_open');

});

确保已在head标签中导入了jquery脚本

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

基本上,您已经添加了一个类,但是由于页面重新加载后,它将再次将其类设置为默认值。