【发布时间】:2025-12-17 20:40:01
【问题描述】:
我是这个网站和 jQuery 的新手。我不知道这是否是常识,但我有一个提交按钮的问题,比如这个线程:
jQuery click event just trigger once
但我的代码是这样的:
我的页面上有这样的表格:
<table border="1">
<tr><th>Song</th><th>Listen</th></tr>
<tr><td>Singer - Song </td>
<td><form class="frm" id="lis_0" name="name">
<input type="hidden" class="url" value="somelink" id="url_0" />
<input class="submit" type="submit" onmouseover="activate(this, 0)" onmouseout="deactivate(this, 0)" value="Listen" />
</form>
</td>
</tr>
<tr><td>Singer - Song </td>
<td><form class="frm" id="lis_1" name="name">
<input type="hidden" class="url" value="somelink" id="url_1" />
<input class="submit" type="submit" onmouseover="activate(this, 1)" onmouseout="deactivate(this, 1)" value="Listen" />
</form>
</td>
</tr>
....
....
</table>
我正在从这些表中获取信息到player.php,如下所示:
$('.submit').click(function(){
$.ajax({
type : "GET",
url : "player.php",
data : {"url" : $("#active").val() },
success : function(response){
alert(response);
$("#response div").fadeOut("fast", function(){
$("#response div").remove();
$("#response").append($(response).hide().fadeIn());
});
}
});
return false;
});
这个player.php返回一个div,像这样:
'<div class="mp3player">
<p id="audioplayer_1">Alternative content</p>
<script type="text/javascript">
AudioPlayer.embed("audioplayer_1", {
soundFile: "'.$file.'",
titles: "'.$title.'",
artists: "'.$artist.'",
autostart: "yes"
});
</script>
</div>'
在删除之前的内容后,我将其附加到页面上的响应 div 中。它运作良好,但我有另一个提交事件来搜索这些歌曲:
$('form[id^="search"]').submit(function(){
$.ajax({
type : "GET",
url : "search.php",
data : {"searchText" : $("#searchText").val() },
success : function(response){
$('div[id="results"]').fadeOut("fast", function(){
$('div[id="results"]').remove();
$("#leftcolumn").append($(response).hide().fadeIn());
});
}
});
return false;
});
当我从这个表单在我的页面上运行搜索时:
<form class="search" id="searchForm" name="name">
<input type="text" value="" id="searchText" name="searchString" />
<input type="submit" value="Search" />
</form>
search.php 工作并用新结果替换我的表。然后我的表格第二次无法使用。
对不起,很长的帖子,但我不知道要发布什么,不应该发布什么。非常感谢。
【问题讨论】:
-
使用
.on('click', function(){...})代替.click(function(){ ... })。就像您链接到的问题的公认答案一样。 -
@Matt
.click()和.on('click',function()最终是同一个东西 -
@wirey No.
.on()等效于.bind()(已弃用),它将事件处理程序应用于与选择器匹配的所有当前 和未来 元素。.click只是将处理程序绑定到当前存在的元素。 -
@Matt 不,只有当你委托.. 意思是
$(parent).on('click','element',function().. 而$(element).on('click',function()相当于 bind().. 和简写 .click() -
@dystroy 看看他的第一条评论.. 他使用 .on 的方式不是委托.. 相当于 bind().. 和 .click()
标签: php javascript jquery ajax forms