私のページは適度に複雑で、jqueryの動作がおかしいと確信しています。そのため、最初に関連するコンテンツを追加します。さらに情報が必要な場合は、お知らせください。提供します。
前提は、キーワードバブルを保持するdivがあることです。これらのバブルには、選択および選択解除できる関連情報を含むツールチップ(qTipプラグイン)があります。キーワードの関連情報が重複している場合があるため、1つを選択解除すると、他のすべてのキーワードを同時に選択解除する必要があります。このバブルのリストはajaxを介して動的に作成され、ライブでページに追加し続けることができます。
問題は、チェックボックスの一部をクリックしてもチェックが外れないことですが、別のツールチップで同じチェックボックスをクリックすると機能します...これにより、元のチェックボックスも正常に機能するようになります。なぜいくつかの仕事と他の仕事がしないのか私にはわかりません。ライブのonlick関数のバインディングやセレクターの記述方法に関係していると思います。
次の関数は、jsonオブジェクトに基づいてツールチップのhtmlコンテンツを書き込むため、コンテンツがそこにあると想定します。下部のjqueryコードは、チェックボックスにバインドした関数です。
function constructSpecializationsHTML(data){
var html = '';
for(i = 0; i < data.specializations.length; i++){
if(data.specializations[i].name != ''){
html += "<span class='is-specialization-line'>";
html += "<input class='is-specialization-checkbox' type='checkbox' name='" + data.specializations[i].name + "' checked='" + isSpecializationChecked(data.specializations[i].name) + "'/>";
html += "<span>" + data.specializations[i].name + "</span>";
html += "</span><br />";
} else {
html += "This keyword is not known in our ontology";
}
}
return html;
}
$(document).on("click", ".is-specialization-checkbox", function(){
var $checkboxs = $(".is-specialization-checkbox[name='" + $(this).attr("name") + "']")
$checkboxs.prop("checked", !$checkboxs.prop("checked"));
});