Jquery taconite选择器,带有需要转义的角色

时间:2009-10-06 00:28:52

标签: javascript jquery jquery-plugins escaping

我正在使用jquery taconite插件来创建一个ajax请求,它将替换我页面中的某个元素,但该元素的id为“email.subject”..

如果我执行'$("email\\.subject")',我可以选择它,但是当我尝试使用这样的taconite插件时:

<taconite>
    <replaceWith select="#email\\.subject">
        JUCA
    </replaceWith>
</taconite>

插件日志说:

[taconite] No matching targets for selector: #email\\.subject

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

好的,这就是我做的。但它并不适合我。 (我没有通过整个来源)。但它会指出你正确的方向。

问题实际上是在jquery.taconite.js文件中,在152行左右(如果您正在查看最新版本!),您可以看到:

var q = cmdNode.getAttribute('select');
var jq = $(q);

如果我在上面的语句中添加一个警告来找出jq的值,它会说:[Object object]。但只要它不包含.

,这就有效

问题是taconite的作者没有从“select”属性值检查.。当我在一个简单的js文件中尝试将其隔离时,以下代码适用于我。但是当我在jquery.taconite.js文件中使用它时,它不起作用。需要更多调整?

var x = cmdNode.getAttribute('select');
alert(x); //Shows what you have entered in <replaceWith select="#email.subject"> i.e "#email.subject"
var q = x.replace(/\./g, "\\\\\."); //Searches for a . in the string and escapes it! So now it becomes: "#email\\.subject"
alert(q) //Alerts #email\\.subject ... Great! Works fine till this point!
var jq = $(q);
alert(jq[0]); //Says "undefined"!!!! This is where i got stuck! Why does it say undefined??