1

JQuery を使用して正しい要素を選択するのに問題があります。JavaScript DOM の使用は正常に機能していますが、JQuery では正しい要素を取得できないようです...

これは正常に機能しています (「中」の長さは 1、「小」の長さは 0):

var medium = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Medium");
var small = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Small");

alert("Medium: " + jQuery(medium).length + " - Small: " + jQuery(small).length + " - State: " + workflowButtonState);

これは機能していませんが (両方の長さが 0 で、正しくありません):

var medium = jQuery("#Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Medium");
var small = jQuery("#Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Small");

alert("Medium: " + jQuery(medium).length + " - Small: " + jQuery(small).length + " - State: " + workflowButtonState);

別の動作しない例は、.html() を使用する場合です。

作業中 (html を返します):

var button = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + buttonId + "-" + state);
$(button).css("display", "none");
alert($(button).html());

動作していません (.html() は NULL を返します)

var button = $("#Ribbon.Documents.WorkflowButtons.Workflow" + buttonId + "-" + state);
$(button).css("display", "none");
alert($(button).html());

なぜこれが起こっているのですか?これを同じページで実行しています。したがって、同じ HTML 要素などの結果は同じであるはずです。

「document.readyState」が「complete」と等しいことを確認しました

PS: jQuery と $ の 2 つの構文を使用しました。これは、他の問題がないことを確認するためでした。

ありがとう !

4

1 に答える 1

1

ピリオドは、jQuery では特別な意味を持ちます。したがって、スラッシュでそれらをエスケープする必要があります。残念ながら、スラッシュは Javascript 文字列のエスケープ文字でもあるため、二重スラッシュを使用する必要があります。

jQuery("#Ribbon\\.Documents\\.WorkflowButtons\\.Workflow" + button + "-Medium");
于 2012-09-10T08:36:17.457 に答える