我正在尝试替换/替换下面的一个jQuery目标(而不是HTML元素),具体取决于用户选择的语言。
例如,如果用户选择英语作为语言,我想删除#English
目标,但保留其他目标(即#Spanish, #German
)。
我该怎么做?
$( "#English, #Spanish, #German").click function { blah, blah, blah };
答案 0 :(得分:3)
看起来你只想触发一次元素的处理程序,在这种情况下使用.one()
$( "#English, #Spanish, #German").one('click', function(){
})
答案 1 :(得分:3)
取消绑定ID点击事件
$("#English, #Spanish, #German").click( function(){
$(this).unbind('click');
});
答案 2 :(得分:1)
一种简单的方法就是检查处理程序以查看它是否是所选语言。
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;
}
});
答案 3 :(得分:0)
您可以将选中的人传递给变量,然后将其用作主目标的过滤器:
var filter = $('#english');
$('#german, #english, #spanish').not(filter).on('click',function(){ //...
另外,请避免使用.click()
,而是使用.on()
(如果您没有使用旧的jQuery版本)。
答案 4 :(得分:0)
首先,我不认为使用event handler
ID
来71
$( "#English, #Spanish, #German").click(...);
class
绑定<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
相反,您可以使用ID
来表示所有元素,例如
click
在这种情况下,您不需要单独的link
,但如果您因某些其他原因需要,那么您可以为每个元素保留唯一的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');
});
此外,您可以使用off
处理程序的命名空间,如
{{1}}
另一个处理程序
{{1}}
为一个点击处理程序检查this example,为多个处理程序检查this example,但在触发一次后,一个处理程序将为{{1}}。