jQuery正在替换元素id,但以后无法识别它

jQuery正在替换元素id,但以后无法识别它,jquery,Jquery,我有一个播放按钮和一个前进按钮 因此,HTML是: <div id="control"> <a href="#" id="pause"></a> <a href="#" id="next"></a> </div> 您可以使用播放/暂停处理程序,如下所示: $('#control').delegate("#pause", "click", function(event) { $(this).css("

我有一个播放按钮和一个前进按钮

因此,HTML是:

<div id="control">
    <a href="#" id="pause"></a>
    <a href="#" id="next"></a>
</div>
您可以使用播放/暂停处理程序,如下所示:

$('#control').delegate("#pause", "click", function(event) {
    $(this).css("background-image", "url(../images/controls_play.png)")
           .attr('id', 'play');
}).delegate("#play", "click", function(event) {
    $(this).css("background-image", "url(../images/controls_pause.png)")
           .attr('id', 'pause');
});
。现在,它不再在页面加载时查找具有匹配ID的控件,而是侦听
click
事件并在事件发生时检查ID,这将为您提供所需的操作更改效果。请注意,这比您知道元素的确切位置更有效。

您可以将其用于播放/暂停处理程序,如下所示:

$('#control').delegate("#pause", "click", function(event) {
    $(this).css("background-image", "url(../images/controls_play.png)")
           .attr('id', 'play');
}).delegate("#play", "click", function(event) {
    $(this).css("background-image", "url(../images/controls_pause.png)")
           .attr('id', 'pause');
});
。现在,它不再在页面加载时查找具有匹配ID的控件,而是侦听
click
事件并在事件发生时检查ID,这将为您提供所需的操作更改效果。请注意,这比您知道元素的确切位置更有效。

尝试.live('click',function(){})

你可以尝试另一种方法。将事件绑定到类,然后更改id。然后在执行任何操作之前测试id

尝试.live('click',function(){})


你可以尝试另一种方法。将事件绑定到一个类,然后更改id。然后在执行任何操作之前测试id

我认为更改id时,单击事件不会附加到try live或delegate

$('#pause').live("click", function(event) {
    $(this).css("background-image", "url(../images/controls_play.png)");
    $(this).attr('id', 'play');
});

$('#play').live("click",function(event) {
    $(this).css("background-image", "url(../images/controls_pause.png)");
    $(this).attr('id', 'pause');
});


$('#next').live("click",function(event) {
    $('#pause').css("background-image", "url(../images/controls_play.png)");
    $('#pause').attr('id', 'play'); 
});

我认为当您更改ID try live或delegate时,单击事件不会附加

$('#pause').live("click", function(event) {
    $(this).css("background-image", "url(../images/controls_play.png)");
    $(this).attr('id', 'play');
});

$('#play').live("click",function(event) {
    $(this).css("background-image", "url(../images/controls_pause.png)");
    $(this).attr('id', 'pause');
});


$('#next').live("click",function(event) {
    $('#pause').css("background-image", "url(../images/controls_play.png)");
    $('#pause').attr('id', 'play'); 
});

您可以尝试做的不是引用
播放
暂停
,而是引用
控件
,并根据单击的内容设置
控件
内部的HTML。您还可以通过类来区分
play
pause
。举个例子,你会有一些像

$('#control').click(function(event) {
    if($(this).attr('class') == 'play') {
        $(this).css("background-image", "url(../images/controls_pause.png)");
        $(this).attr('class', 'pause');
    }
    if($(this).attr('id') == 'pause') {
        $(this).css("background-image", "url(../images/controls_play.png)");
        $(this).attr('class', 'play');
    }
});

$('#next').click(function(event) {
    $('#control').css("background-image", "url(../images/controls_play.png)");
    $('#control').attr('id', 'play'); 
});

您还可以通过将背景图像分配给类来节省几行代码,这样您就不需要显示
.css('background-image','x.gif')
的行,因为这些属性将在css中。

您可以尝试做的是不引用
play
pause
,您可以引用
control
并根据单击的内容设置
control
内部的HTML。您还可以通过类来区分
play
pause
。举个例子,你会有一些像

$('#control').click(function(event) {
    if($(this).attr('class') == 'play') {
        $(this).css("background-image", "url(../images/controls_pause.png)");
        $(this).attr('class', 'pause');
    }
    if($(this).attr('id') == 'pause') {
        $(this).css("background-image", "url(../images/controls_play.png)");
        $(this).attr('class', 'play');
    }
});

$('#next').click(function(event) {
    $('#control').css("background-image", "url(../images/controls_play.png)");
    $('#control').attr('id', 'play'); 
});
您还可以通过将背景图像分配给类来节省几行代码,这样您就不需要显示
.css('background-image','x.gif')
,因为这些属性将在css中。

您可以用来存储按钮的状态。 因此,要将按钮的状态设置为播放使用:

$("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
然后,要获取按钮的状态,只需执行以下操作:

$("#playPause").data("state");
因此,单击“执行”按钮:

$("#playPause").click(function(event) {
    var state = $("#playPause").data("state");
    if(state === "play"){
      $("#playPause").css("background-image",    "url(../images/controls_pause.png)").data("state","pause");
    }
    else {
       $("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
    }
});
单击“下一步”时:

$('#next').click(function(event) {
    $("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
});
您可以使用存储按钮的状态。 因此,要将按钮的状态设置为播放使用:

$("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
然后,要获取按钮的状态,只需执行以下操作:

$("#playPause").data("state");
因此,单击“执行”按钮:

$("#playPause").click(function(event) {
    var state = $("#playPause").data("state");
    if(state === "play"){
      $("#playPause").css("background-image",    "url(../images/controls_pause.png)").data("state","pause");
    }
    else {
       $("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
    }
});
单击“下一步”时:

$('#next').click(function(event) {
    $("#playPause").css("background-image", "url(../images/controls_play.png)").data("state","play");
});

+1-我同意类应优先于更改ID。+1-我同意类应优先于更改ID。