2016-05-06 5 views
3

htmlでjQuery変数をIdとして渡すことは可能です。例えば、jQueryの値がHTMLのidとして渡されます

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

ここでは、現在クリックされているid値「dynamicID」を取得しています。この値を次のような別の変数に渡します。

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

私は上記のように試しました。しかし、私はエラー "ReferenceError:dynamicIDは定義されていません"を取得しています。この問題を解決するには? addvideoクリックイベント内の

+3

それはあなたが問題に実行している理由である、完全に異なるスコープにあります。私が持っている質問は、なぜあなたはすでに持っている要素を再選択したいのですか?あなたは単にDOMノードへの参照を格納することができ、まったく再選択する必要はありません。 – zzzzBov

答えて

2

書き込み変更イベント、そして唯一それが結合する:

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

idは一意ではないと仮定すると、これは単純に '$(this).change(...)'でidを抽出して同じ要素をidで選択する必要はありませんか? –

0

をエラーはどこか、それは利用できませんから、変数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 
0

あなたがそのエラーを取得している理由は、あなたがdynamicIDが定義されないことを意味し、別の範囲にあることです。このように同じ範囲にそれを追加してみてください:

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

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

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

}); 
0

まあ、私はあなたがダイナミックイドをフェッチするつもり方法を知っていますが、テキストボックスからそれを取得しようとしている想像していません。ここで私はそれをやるでしょう。

$(document).ready(function() { 
 
    var dynamicID = '#' + $('#yada').val(); 
 

 
    $(dynamicID).on('input', function(e) { 
 
    alert('hi'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="yada" value="yada">

関連する問題