2014-07-17 100 views
0

我遇到绑定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> 

注类包含选择选而id =标题

的下一个比特是可见由生成的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> 

现在我有以下的“适用于所有”代码

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

我总是希望在任何下拉列表发生更改时触发此事件。这工作正常。

现在我有一个具体的下拉列表,我想有一个页面上发生特定的功能,但我也希望有上述火灾。我绑定这个ID

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

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

发生在我的一个解决方案是把“包罗万象”的代码放到一个功能,只需调用的事件处理函数还有#Title处理。

有没有更好的或可接受的方式来做到这一点?或者我的方法总体上可以改进吗?

顺便项目使用使用C#和剃刀语法MVC模式开发。

任何帮助或指导将非常感激

+0

一个更好的解决方案,如果你能说明你为什么在代码中使用'off()',我们可能会给出更好的答案 –

回答

2

而不去使用.off()为你做的原因,解决方案是使用events with namespace

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

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

谢谢Arun,使用off()是无关的。我在另一个场景中看到,在部分页面上使用js导致事件被绑定多次。在我的问题时,我正在尝试几件事情。再次感谢您的帮助,并指引我朝着正确的方向前进。 – Kamal

相关问题