jquery更改锚链接的文本

时间:2016-03-15 18:12:12

标签: jquery html

我有这个锚链接:

<li><a class="tab" id="watchTicket" href="#" onclick="CallPage('/section/tickets/view-ticket?action=watch&seq=<?php echo $_GET["seq"]; ?>');"><?php echo ($TicketWatched ? 'Un-Watch' : 'Watch'); ?></a></li>

我希望能够使用jquery更改其中的文本,我尝试过:

<script type="text/javascript">
$("a#watchTicket").text('Watch');
</script>

<script type="text/javascript">
$("li a#watchTicket").text('Watch');
</script>

但两者都没有更改文本,控制台中没有错误

我有这个jquery函数:

function CallPage(url) {
    $.ajax({
        url: url,
        dataType: 'jsonp',
        success: function(data){

        }
    });
}

调用页面,这是锚OnClick

中使用的函数

所有这些代码都在一个页面上,我更改了页面顶部的文本 - 即使用PHP和JQuery:

<?php
if($_GET["action"] == 'watch' && isset($_GET["seq"])) {
    // SQL Query here
    ?>
    <script type="text/javascript">
    $(document).ready(function(){
        $("a#watchTicket").text('Watch');
    });
    </script>
    <?php
}
?>

然后实际的锚链接在此代码

之下

更新

我刚刚将我的功能改为:

function WatchTicket() {
    $.ajax({
        url: 'view-ticket?seq=<?php echo $_GET["seq"]; ?>&action=watch',
        dataType: 'jsonp',
        success: function(data){
            var text = $("a#watchTicket").text();

            if(text === "Watch") {
                $("a#watchTicket").text('Un-Watch');
            } else {
                $("a#watchTicket").text('Watch');
            }
        }
    });
}

我在锚标记的OnClick中调用

但是现在虽然通话成功,但这并没有改变文字吗?

3 个答案:

答案 0 :(得分:1)

如果jQuery代码因未知原因而无法运行,您可以尝试使用javascript。

function WatchTicket() {
    $.ajax({
        url: 'view-ticket?seq=<?php echo $_GET["seq"]; ?>&action=watch',
        dataType: 'jsonp',
        success: function(data){
            var link_node = document.getElementById('watchTicket');
            var txt = "Watch";
            link_node.innerHTML = link_node.innerHTML === txt ? 'Un-Watch' : txt;


        }
    });
}

如果它没有工作,那么Ajax请求可能会失败。

答案 1 :(得分:0)

您的代码应该有效。尝试用

包装它
$(document).ready(function(){
    //your code here
});

更新:

您应该在成功回调中添加$("a#watchTicket").text('Watch');和任何相关代码,因此当ajax调用成功完成时,它会更新锚文本。

答案 2 :(得分:0)

尝试将<script>标记放在if($_GET["action"] == 'watch' && isset($_GET["seq"])) { ... } php标记之外。

如果页面是php:

<a id="watchTicket" ... ></a> //your link
<?php if(){ ...} ?> //the php code
<script>
 $(document).ready(function(){
     $("a#watchTicket").text('Watch');
 });
<script>

确保jQuery正确加载。代码应该工作。

编辑:

如果您想在加载'callPage'之后发生,请将您的$("a#watchTicket").text('Watch');放在success: function(data){部分内。