我正在尝试替换/替换下面的 jQuery 目标之一(不是 HTML 元素),具体取决于用户选择的语言。
例如,如果用户选择英语作为语言,我想删除#English
目标,但保留其他(即#Spanish, #German
)。
我怎样才能做到这一点?
$( "#English, #Spanish, #German").click function { blah, blah, blah };
我正在尝试替换/替换下面的 jQuery 目标之一(不是 HTML 元素),具体取决于用户选择的语言。
例如,如果用户选择英语作为语言,我想删除#English
目标,但保留其他(即#Spanish, #German
)。
我怎样才能做到这一点?
$( "#English, #Spanish, #German").click function { blah, blah, blah };
看起来您只想触发一次元素的处理程序,在这种情况下使用.one()
$( "#English, #Spanish, #German").one('click', function(){
})
解绑id点击事件
$("#English, #Spanish, #German").click( function(){
$(this).unbind('click');
});
一种简单的方法是只检查处理程序以查看它是否是所选语言。
var chosen_language = 'English'; // This can be updated by some other code
$("#English, #Spanish, #German").click(function() {
if (this.id != chosen_language) {
blah blah blah;
}
});
您可以将谁被选中传递给一个变量,然后将其用作主要目标的过滤器:
var filter = $('#english');
$('#german, #english, #spanish').not(filter).on('click',function(){ //...
另外,避免使用.click()
,.on()
代替(如果你没有使用旧的 jQuery 版本)。
首先,我认为这不是event handler
使用ID
s绑定71
元素的正确/好方法(您在问题中提到),例如
$( "#English, #Spanish, #German").click(...);
相反,您可以class
像这样将 a 用于所有元素
<a class='language' id="English" href="whatever">English</a>
<a class='language' id="Spanish" href="whatever">Spanish</a>
<a class='language' id="German" href="whatever">German</a>
在这种情况下,您不需要单独ID
的 s,但如果您出于其他原因需要,那么您可以ID
为每个元素保留一个唯一的。click
现在要为所有link
具有该类的 s绑定一个处理程序language
,您可以使用类似这样的东西
$(".language").on('click', function(e) {
e.preventDefault();
// Do whatever you want to do then update the click handler
alert($(this).text() + ' is selected!');
// Then update the click handler instead of removing it because
// if you remove the click handler then next time yopu click the
// link, it'll do it's default behavior, will be navigated away
$(this).off('click').on('click', function(){ return false; });
});
此外,您可以为处理程序使用命名空间,click
例如
$(".language").on('click.langualeSelection', function(e) {
e.preventDefault();
// Do it once
alert($(this).text() + ' is selected!');
// remove only this handler, other handler will prevent default
// behavior but if there is no other handler, then update it like
// previous example given above to stop loading the linked page
$(this).off('click.langualeSelection');
});
另一个处理程序
$(".language").on('click', function(e) {
e.preventDefault();
alert('Another click handler for language class');
});