Использование фильтра wordpress the_content для внедрения javascript приводит к ошибке синтаксиса javascript - PullRequest
0 голосов
/ 03 ноября 2011

Я пишу плагин WordPress для вставки JavaScript и HTML в пост. Используя фильтр "the_content", мне удается вставить свой тег со всеми моими функциями javascript и всей моей HTML-разметкой впоследствии. Проблема в том, что скрипты не работают, и firebug помечает их как синтаксическую ошибку, не очень точно указав, где находится ошибка.

Вот содержимое тегов javascript, которые вставляются на страницу и которые не содержат никаких синтаксических ошибок при проверке.

    <![CDATA[ 
    Votes = {};
    $(document).ready(function()
    {
        $(".starContainer span").hover(sr_addBG("http://revealcoupons.com/wp-content/plugins/StarRatingLite/images/stars.png"), sr_removeBG());
    });
function sr_addBG(ImgURL){
    $(this).css("background","transparent url("+ImgURL+") repeat-x 0 -60px");
}
function sr_removeBG(){
    $(this).css("background","none");
}
function sr_castVote(ID,Vote, ImgURL){
    Votes[ID] = Vote;
    $("#starContainer"+ID+" span").css("background","none");
    $("ID"+ID+"Star"+Vote).css("background","transparent url("+ImgURL+") repeat-x 0 -60px");
}
function sr_verifyVote(NbFeatures){
    var count = 0;
    for (var e in Votes)
    {count++;}
    return count >= NbFeatures;
} 
function sr_submitVotes(NbFeatures, PostID){
    if (sr_verifyVote(NbFeatures))
    {
        ajaxReq = new XMLHttpRequest();ajaxReq.onreadystatechange=function() 
        {
            if (ajaxReq.readyState == 4 && ajaxReq.status == 200)
            {
                alert("BAM! vote submitted. Thank you");
            }
        }
        var voteStr = "";
        for (var vote in Votes)
        {voteStr += vote+"[eq]"+Votes[vote]+"[amp]";}
        voteStr = voteStr.substring(0, voteStr.length - 5);
        ajaxReq.open("http://revealcoupons.com/wp-content/plugins/StarRatingLite/StarRatingLite.php?PostID="+PostID+"&votes="+voteStr");
        ajaxReq.send();
    }
    else
    { 
        alert("You must vote on all features before submitting your opinion.");
    }
}]]&gt;

Единственная ошибка, которую выдает firebug, это "синтаксическая ошибка", не будучи более конкретной. Единственное, что я не написал, так это конец секции cdata, где символ «>» автоматически заменяется на «>».

Спасибо за любой вклад!

1 Ответ

0 голосов
/ 03 ноября 2011

ваш .hover() не так. он ожидает 2 обработчика функций, и вместо этого вы передаете undefined дважды

попробуйте с этим, если бы я добавил функцию оболочки

$(".starContainer span").hover(function(){sr_addBG("http://revealcoupons.com/wp-content/plugins/StarRatingLite/images/stars.png")}, function(){sr_removeBG()});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...