Jquery根据不同的选择器为同一元素分配事件



我在绑定jquery事件时有一个问题。

我有一个下拉列表,出于兴趣,我使用选择的插件。这一直在我的网页上使用。

以下示例:

<select name="Title" class="form-control chosen-select" id="Title" style="display: none;"><option value=""></option>
<option value="TMR">Mr</option>
<option value="TMRS">Mrs</option>
<option value="TDR">Dr</option>
<option value="TMS">Miss</option>
</select>

注意这个类包含了chosen-select和id=Title

下一位是由chosen生成的可见html(我认为这对问题来说是不必要的,但解释了显示:上面没有,为了完整性,我包括了)

<div title="" class="chosen-container chosen-container-single" id="Title_chosen" style="width: 100%;"><a tabindex="-1" class="chosen-single"><span>Mrs</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off"></div><ul class="chosen-results"><li class="active-result" data-option-array-index="1">Mr</li><li class="active-result result-selected" data-option-array-index="2">Mrs</li><li class="active-result" data-option-array-index="3">Dr</li><li class="active-result" data-option-array-index="4">Miss</li></ul></div></div>

现在我有了下面的"apply to all"代码

$('.chosen-select').off('change').on('change', function () {
            alert('In chosen');               
        });

我总是希望这个事件在任何下拉列表被改变时触发。

现在我有一个特定的下拉列表,我想让一个特定的函数出现在页面上,但我也想让上面的内容被触发。我将它绑定到id

$('#Title').off('change').on('change', function () {
                alert('title');
            });

在这种情况下,只有#Title上的事件触发。

我想到的一个解决方案是将"catch-all"代码放入函数中,并简单地在事件处理程序和#Title处理程序中调用该函数。

是否有更好或被接受的方法来做这件事?或者我的方法总体上可以改进吗?

顺便说一下,这个项目是用MVC模式开发的,使用c#和Razor语法。

任何帮助或指导将不胜感激

不需要像前面那样去解释使用.off()的原因,解决方案是使用像

这样的命名空间的事件
$('.chosen-select').off('change.common').on('change.common', function () {
    alert('In chosen');
});
$('#Title').off('change.title').on('change.title', function () {
    alert('title');
});

相关内容

  • 没有找到相关文章

最新更新