我有一个非常特殊的问题,我无法掌握它。 我的输入元素上的尾部斜线消失了,虽然我确定(双重检查)php确实包含它们。当jquery将这些数据附加到html树时会发生一些事情。
问题可以在这里看到:http://gamoicani.es/logo/如果你点击logo并看到输入html,你会发现最后没有尾部斜杠。
但在php中我有这个:
<input type="text" name="guesslogo" data-lang="<?php echo $row['logo_lang']; ?>" />
我甚至试过<input></input>
,但结果是一样的。
我还在这些输入上禁用了旋钮和kbd jquery插件,但有些东西不对,它根本不起作用。
我检查了我的ajax电话:
function create_views(level) {
$.ajax({
url: "actions.php",
type: "GET",
data: "show_level=" + level,
cache: false,
success: function (data){
views[level] = '<li data-level="' + level + '">' + data + '</li>';
//Count completed tasks
completed_calls++;
//if last level is loaded-called append and activate slider
if (levels == completed_calls) {
//append views to container
console.dir($(".slides_container").append(views.join(' ')));
//activate slider
unislider = $(".slides_container").dpUniSlider({
//loop: false,
draggable: false
});
//Activate Georgian keyboard for some logos
$("input[data-lang=ge]").GeoKBD();
//Activate progress bar
update_level_progress_bar();
}
}
});
}
在视图和/上有console.dir吗?所以一定是在追加出现问题的时候......我的想法已经用完了......
为什么我要关心斜杠?
on.keypress only works for first input in html
//check answer on ENTER keyboard press
$("body").on("keypress", "input:text[name=guesslogo]", function(e){
if (e.keyCode == 13) {
$(this).siblings(".check").trigger("click");
}
});
这不能正常工作!
任何帮助表示赞赏!
答案 0 :(得分:2)
如前所述,它与斜杠无关。
使用keydown将代码更改为使用document而不是body
$(document).on("keydown","input[name='guesslogo']",function(e){
if (e.keyCode == 13) {
$(this).siblings(".check").trigger("click");
}
});
您的代码将适用于此更改。
答案 1 :(得分:1)
您不需要在输入标记上使用斜杠。它们不包含其中的项目,并表示为单个标记。
此:
我甚至试过
<input></input>
,但结果是一样的。
实际上是完全错误的。永远不会有input
的结束标记另一方面,jQuery没有附加你发布的内容,它会解析它,然后将其添加为语义正确的HTML。
例如$().append
会为"<div>"
,"<div/>"
和"<div></div>"
添加相同的内容
Chrome开发工具等工具也会在没有/的情况下显示输入,即使您明确将其输入到源代码中也是如此。
尝试检查输入:http://jsfiddle.net/f7USH/,你会看到元素被添加为带斜杠的输入,但在devtools中没有它。
答案 2 :(得分:0)
现代HTML中的自动关闭标记语法仅为syntactic sugar for people addicted to XML。
当您使用DOM查看器查看文档时,您会看到DOM的序列化为HTML(而不是原始源代码)。
由于斜杠完全是可选的,因此您的查看器无法渲染它。
为什么我要关心斜杠?
该代码不起作用与尾部斜杠无关。