警报没有't在on change函数内触发

Alert doesn't trigger within on change function

本文关键字:change on 函数      更新时间:2023-09-26

我的警报不会在这里触发。

$('.filters-select').on('change', function() {
var $this = $(this);
var $buttonGroup = $this('.filters-select');
alert('test');
var filterGroup = $buttonGroup.attr('data-filter-group');
filters[filterGroup] = $this.attr('data-filter');
var filterValue = concatValues( filters );
$container.isotope({filter:filterValue});
});

尽管当它被作为函数中的第一个东西放置时,它确实有效。

$('.filters-select').on('change', function() {
alert('test');
var $this = $(this);
var $buttonGroup = $this('.filters-select');
var filterGroup = $buttonGroup.attr('data-filter-group');
filters[filterGroup] = $this.attr('data-filter');
var filterValue = concatValues( filters );
$container.isotope({filter:filterValue});
});

这是HTML:

<select class="filters-select" data-filter-group="market">
  <option value="*">Select a Market Category</option>
  <option value=".industrial" data-filter=".industrial">Industrial</option>
  <option value=".commercial" data-filter=".commercial">Commercial</option>
  <option value=".government" data-filter=".government">Government</option>
</select>

您的第一个代码块没有激发的原因是因为这一行无效JS:

var $buttonGroup = $this('.filters-select');

第二个区块也在这条线上断裂,恰好你把alert移到了它上面

我不确定你想用$this('.filters-select');实现什么,但我会考虑删除它,并重新思考你的策略。为了将来参考,浏览器中的开发人员控制台可以是你开发时最好的朋友。

这个代码:$this('.filters-select');是无效的,所以浏览器不会提醒它之后的任何东西。它认为$this试图成为一个方法,但显然不是。

change事件中,$(this)将返回select,而不是所选的option

我很确定这就是你想要的。

$('.filters-select').on('change', function() {
  alert('test');
  var filterGroup = $(this).attr('data-filter-group');
  filters[filterGroup] = $(this).find(":selected").attr('data-filter');
  var filterValue = concatValues(filters);
  $container.isotope({
    filter: filterValue
  });
});

如果使用JQuery,则需要调用$(document).ready()来启动中的代码。

$(document).ready(function(){
    $('.filters-select').change(function() {
        alert('Teste');
    });
});