Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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值在html中作为id传递_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery值在html中作为id传递

Javascript jQuery值在html中作为id传递,javascript,jquery,html,Javascript,Jquery,Html,可以在Html中将jQuery变量作为Id传递。比如说 $(document).on('click', '.addvideo', function () { var dynamicID = $(this).attr('id'); }); 这里我得到了当前点击的id值“dynamicID”。我想把这个值传递给另一个变量,如下所示 $('#'+dynamicID).change(function(){ alert('hi'); }); 我像上面那样试过。但我得到错误“

可以在Html中将jQuery变量作为Id传递。比如说

 $(document).on('click', '.addvideo', function () {
     var dynamicID = $(this).attr('id');
});
这里我得到了当前点击的id值“dynamicID”。我想把这个值传递给另一个变量,如下所示

$('#'+dynamicID).change(function(){
    alert('hi');
    });

我像上面那样试过。但我得到错误“引用错误:未定义dynamicID”。如何解决此问题?

在addvideo click事件中写入更改事件,则只有它将绑定:

$(document).on('click', '.addvideo', function () {
     var dynamicID = $(this).attr('id');
     $('#'+dynamicID).change(function(){
        alert('hi');
     });
});

该错误是由于您试图从变量
dynamicID
不可用的地方访问该变量而导致的

JS中的变量只能在定义它们的函数中访问,换句话说,就是您编写
var something='value'
的部分

因此,在您的示例中,变量
dynamicID
可在该函数内的任何位置使用,但不能在其外部使用

$(document).on('click', '.addvideo', function () {
     var dynamicID = $(this).attr('id');
});
console.log(dynamicID) //ReferenceError: dynamicID is not defined
当您尝试在函数外部访问
dynamicID
时,您将得到一个错误,因为它基本上不存在

因此,您可以将使用
dynamicID
的函数移动到定义它的函数中:

$(document).on('click', '.addvideo', function () {
     var dynamicID = $(this).attr('id');
     $('#'+dynamicID).change(function(){
        alert('hi');
     });
});
或者,要在其他地方访问变量,可以在函数外部定义它,在函数中为它赋值,然后从其他地方访问它

var dynamicID;
$(document).on('click', '.addvideo', function () {
     dynamicID = $(this).attr('id');
});

console.log(dynamicID) //this will log the ID value provided the element has been clicked

出现该错误的原因是,您处于不同的作用域中,这意味着不会定义dynamicID。尝试将其添加到相同的范围,如下所示:

$(document).on('click', '.addvideo', function () {

    var dynamicID = $(this).attr('id');

    $('#'+dynamicID).change(function(){
        alert('hi');
    });

});

我不知道你打算如何获取动态Id,但想象一下你正试图从文本框中获取它。我会这样做的

$(文档).ready(函数(){
var dynamicID='#'+$('#yada').val();
$(dynamicID).on('input',函数(e){
警报(“hi”);
});
});


它位于完全不同的范围内,这就是您遇到问题的原因。我的问题是:为什么要重新选择已有的元素?您可以只存储对DOM节点的引用,而不必重新选择。假设id是唯一的,这不是简单的
$(this)。更改(…)
w/o提取id并按id选择相同的元素吗?