Javascript 更改选择时的事件而不触发单击事件
我有这个密码:Javascript 更改选择时的事件而不触发单击事件,javascript,jquery,Javascript,Jquery,我有这个密码: var $d_docSelect = $("<select>").appendTo($registerExamBox).click(function(){ while($d_docSelect[0].firstChild) $d_docSelect[0].removeChild($d_docSelect[0].firstChild); $.ajax({ url: 'test.php', type: 'POST',
var $d_docSelect = $("<select>").appendTo($registerExamBox).click(function(){
while($d_docSelect[0].firstChild) $d_docSelect[0].removeChild($d_docSelect[0].firstChild);
$.ajax({
url: 'test.php',
type: 'POST',
data: {
func: 87,
}
}).done(function($msg){
try{
$docs = JSON.parse($msg);
}catch($e){
console.log($e.message);
return false;
}
$docs.forEach(function($row){
$("<option>", {"doc" : $row[0]}).text($row[1] + ' ' + $row[2] + ' ' + $row[3]).appendTo($d_docSelect);
})
$("<option>").text("Dodaj").appendTo($d_docSelect);
});
}).change(function(){
if($d_docSelect[0].selectedIndex == $d_docSelect[0].length - 1){
addDoc($d_docSelect);
}
});
var$d_docSelect=$(“”)。附加到($registerExamBox)。单击(函数(){
而($d_docSelect[0].firstChild)$d_docSelect[0].removeChild($d_docSelect[0].firstChild);
$.ajax({
url:'test.php',
键入:“POST”,
数据:{
func:87,
}
}).done(函数($msg){
试一试{
$docs=JSON.parse($msg);
}捕获量(e美元){
console.log($e.message);
返回false;
}
$docs.forEach(函数($row){
$(“”,{“doc”:$row[0]}.text($row[1]+''+$row[2]+'+'+$row[3])。附录($d_docSelect);
})
$(“”).text(“Dodaj”).appendTo($d_docSelect);
});
}).change(函数(){
如果($d_docSelect[0]。selectedIndex==$d_docSelect[0]。长度-1){
addDoc($d_docSelect);
}
});
每次选择更改选项时,不仅会触发“更改”事件,还会触发“单击”。
我不想在更改选项时触发“单击”,我也不知道如何触发。我在这里和谷歌上都没有找到答案。在javascript中,当您在特定html上添加事件时,您可能会使用冒泡来捕获事件。如果您在addEventListner()上设置了第三个参数true,那么您可能会阻止单击 我想我猜你想做什么,但我不确定你走对了 单击select时加载选项意味着您将在每次单击事件发生时加载这些选项。 当页面准备就绪时,您为什么不尝试加载这些选项(可能是最常见的方式,但您可能有一个很好的理由,我不知道)?
然后,您将只获得更改事件,而不会发生冲突
现在,如果有人知道并且可以展示如何在更改事件发生时取消单击的示例(我已经知道更改在单击之前发生)尝试使用
return false
停止事件传播使用.change()
event如何更改值?通过单击?而不是。单击()
使用.change()
@freedomn-m first line?在addEventListener()中设置true
或false
)
不起作用。冒泡和捕获的概念为您提供了事件的前向和后向如果您需要冒泡意味着捕获事件从开始窗口到结束与您的元素,那么您需要将第三个参数设置为false它捕获什么false首先到达窗口侧,然后您可以检查甚至是更改,或者单击如果不是,则可以停止它按event.preventDefault或event.stopPrapogation等如果你需要捕获,那么它的默认行为如果事件这个链接可以参考我想你是从这里得到的,我想按原样做,因为还有选项dodaj
,它会打开框来添加新选项,然后就可以加载所有选项,而无需刷新页面。带有
的框是应用程序中的第四步,因此刷新页面以再次加载选项将返回到第1步。确定。当你到达第四步时,你不能加载这些选项吗?我坚持,因为每次我试图以你想要的方式处理事件时,都有点棘手。哦,我没有想到,当我在第四步阅读关于加载选项的内容时,我想到了创建刷新按钮,它加载选项。谢谢你的主意。没问题!!:)