警报不会在更改功能中触发

时间:2015-12-22 18:59:41

标签: javascript jquery

我的提醒不会在此处触发。

$('.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>

3 个答案:

答案 0 :(得分:1)

&lt; p&gt;第一个代码块未触发的原因是因为此行无效JS:&lt; / p&gt; &lt; pre&gt;&lt; code&gt; var $ buttonGroup = $ this('。filters-select'); &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;第二个区块在这一行上也被破坏了,恰好你移动了&lt; code&gt;警告&lt; / code&gt;在它之上。&lt; / p&gt; &lt; p&gt;我不确定您要尝试使用&lt; code&gt; $ this('。filters-select');&lt; / code&gt;,但我会考虑删除它并重新考虑您的策略它。为了将来参考,浏览器中的开发人员控制台在开发时可能是您最好的朋友。&lt; / p&gt;

答案 1 :(得分:0)

此代码:$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
  });
});

答案 2 :(得分:0)

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

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