如何替换/替换jQuery目标

时间:2013-11-11 16:37:02

标签: jquery

我正在尝试替换/替换下面的一个jQuery目标(而不是HTML元素),具体取决于用户选择的语言。

例如,如果用户选择英语作为语言,我想删除#English目标,但保留其他目标(即#Spanish, #German)。

我该怎么做?

 $( "#English, #Spanish, #German").click function { blah, blah, blah };

5 个答案:

答案 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版本)。

FIDDLE

答案 4 :(得分:0)

首先,我不认为使用event handler ID71 $( "#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}}。