te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Jquery, check if charAt() is equal to a unicode character? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Jquery, check if charAt() is equal to a unicode character? - Stack Overflow

programmeradmin4浏览0评论

I've got a collapsible link which has the unicode arrow on it

►This is a collapsible link

And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.

Here is my code:

function CollapsibleContainerTitleClickApp(){
     $(".collapsibleContainerContent.app", $(this).parent()).slideToggle();
     alert($(this).text().trim().charAt(0));
     if ($(this).text.trim().charAt(0) == "\u25B8"{
        alert("inside the if statement");
        $(this).text($(this).text().replace("\u25B8", "\u25BE"));
     }else{
        $(this).text($(this).text().replace("\u25BE", "\u25B8"));
}

Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.

I've got a collapsible link which has the unicode arrow on it

►This is a collapsible link

And when someone clicks on it I want it to be turned into the down arrow ▼. However I am having trouble figuring out how to parse to replace this character.

Here is my code:

function CollapsibleContainerTitleClickApp(){
     $(".collapsibleContainerContent.app", $(this).parent()).slideToggle();
     alert($(this).text().trim().charAt(0));
     if ($(this).text.trim().charAt(0) == "\u25B8"{
        alert("inside the if statement");
        $(this).text($(this).text().replace("\u25B8", "\u25BE"));
     }else{
        $(this).text($(this).text().replace("\u25BE", "\u25B8"));
}

Now the first alert always pops up as the actual arrow (►) and viewing the source also has the actual arrow. How can I see if the first character is one arrow, and if so replace it with the other arrow? The second alert statement never fires so it's never passing the condition of the if.

Share Improve this question asked Dec 8, 2010 at 4:25 SventoryMangSventoryMang 10.5k15 gold badges74 silver badges117 bronze badges 2
  • 1 Make sure you've got the right key code, as well - ► as you have in your question is \u25ba, \u25b8 is the smaller arrow ▸. – Chris Morgan Commented Dec 8, 2010 at 4:32
  • 1 In the future, keep an extra eye on JS syntax errors. You should have spotted this soon enough. In Firefox, hit Ctrl+Shift+J to see the JS error console. Or, better, install Firebug. – BalusC Commented Dec 8, 2010 at 4:34
Add a ment  | 

3 Answers 3

Reset to default 8

You have multiple errors in your if statement, this is why that branch is never hit.

if ($(this).text.trim().charAt(0) == "\u25B8"{

You forgot the closing ) of the if statement.

Also, you're not invoking the text() method, you're trying to access it as a member, which it isn't.

Your code should look like this:

if ($(this).text().trim().charAt(0) == "\u25B8") {

charCodeAt(index) returns the integer unicode value of the character at the specified index. This is often the easiest way to test individual char values -- especially when they're non-printable, or special in some other way. (docs at w3schools)

Also... be sure you're paring the correct unicode values. "\u25B8" is the "small right arrow" () -- but the arrow you showed in your example is the "large right arrow", which is "\u25BA" ()

so... a simple example using charCodeAt() and the correct unicode value:

var s = "►This is a collapsible link";
if(s.charCodeAt(0) === 0x25BA) {
   alert( "true!");
}

You can solve this with css and jQuery, too:

CSS:

.collapsible_link:before { content: "\25BC"; }
.collapsed_link:before { content: "\25BA"; }

jQuery:

$('#link').click(function(o) {
   $(o).toggleClass('collapsible_link collapsed_link');
});

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论