Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:从“live”元素获取属性_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:从“live”元素获取属性

Javascript jQuery:从“live”元素获取属性,javascript,jquery,Javascript,Jquery,我按下按钮时会创建一个新窗口。这个窗口包含我想用jquery操作的html输入元素,但我无法捕获这些元素。通常我会使用live函数,因为当按下按钮时,html首先被添加到dom中,但它不起作用 jQuery(document).ready(function () { var opretKnap = jQuery("input[value='Open window']"); jQuery(opretKnap).live('click', function () {

我按下按钮时会创建一个新窗口。这个窗口包含我想用jquery操作的html输入元素,但我无法捕获这些元素。通常我会使用live函数,因为当按下按钮时,html首先被添加到dom中,但它不起作用

 jQuery(document).ready(function () {
    var opretKnap = jQuery("input[value='Open window']");

    jQuery(opretKnap).live('click', function () {

            var inputsDate = jQuery("input[vdfDataType]");

    });
});
什么是vdfDataType?这不是标准的HTML属性。您是否打算使用自定义属性?这通常是一个值得怀疑的策略,尤其是当你想选择它们的时候

是您试图在当前文档中获取的元素吗?您说这是一个“新窗口”,但如果您实际上指的是一个新窗口,而不是页面内的DOM弹出窗口,您将无法从打开它的文档中选择它

jQuery(opretKnap).live
应该是:

.live方法应始终直接在选择器之后调用

也就是说,在实时调用之前的jQuery包装中的参数应该是选择器字符串,例如直接输入[value='openwindow']。opretKnap已经是jQuery包装器了,所以opretKnap.live就可以了

jQuery("input[value='Open window']")
避免将值用作属性选择器。除了它不是很具体,如果某个文本字段中碰巧包含该字符串,会发生什么情况之外,它在jQuery中的许多情况下也是不可靠的

值HTML属性和值DOM属性对于文本输入和其他输入是两个不同的东西;属性提供当前字段值,而属性提供在任何用户输入之前在HTML中指定的原始值。此属性映射到DOM defaultValue属性,而不是值

然而,jQuery使用的Sizzle选择器引擎中的一个bug意味着它将优先读取value属性。这将给出“错误”但可能是期望的结果。。。但并不一致,因为在许多情况下,浏览器自己的querySelectorAll调用将用于加快速度,缩短Sizzle的bug


虽然这可能不会影响你。如果你选择一个按钮,它的值永远不会改变,你应该考虑[value =…]选择器是高度怀疑的,并且尽可能避免它。找到另一种方法来选择您想要的特定输入,例如.class、id、[name=something]或[type=submit],如果是这样的话。

作为旁注,您不需要jqueryoprepertknap.live。。。这里,opretKnap已经设置为jQuery对象。
jQuery("input[value='Open window']")