我正在使用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


我该如何工作?

最佳答案

好的,这就是我所做的。虽然它对我不起作用。 (我没有阅读全部内容)。但这会为您指明正确的方向。

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

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


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

问题在于taconite的作者没有从“选择”属性值中检查.。当我尝试将其隔离在简单的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??

08-15 16:22