Jquery,点击更改插入符号类

时间:2016-09-12 06:23:28

标签: javascript jquery

我在插入符号类- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... UIImage *image = [self.fetchedImages objectAtIndex:indexPath.row]; if (image) { // If there is image don't bother fetching the image. cell.imageView.image = image; } else { NSURL *imageURL = [self.imageURLs objectAtIndex:indexPath.row]; [cell.imageView sd_setImageWithURL:imageURL placeholderImage:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { if (image) { [self.fetchedImages replaceObjectAtIndex:indexPath.row withObject:image]; [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; } }]; return cell; } 下面有这个html代码。现在我希望如果用户点击插入符号,则插入符号类将被删除并被fa fa-caret-down类替换。同样,如果他点击这个插入课程,它将回到插入课堂。

(任何其他方式也没关系)。我试过这个:

fa fa-caret-up

[这个toogle在此代码中运行也非常糟糕]

但这只适用于第一部分。如果我试图回到插入符号,则没有任何反应。

这就是我的HTML:

$(document).ready(function() {
    $('.fa-caret-down').on('click', function () {
        $(this).removeClass('fa-caret-down').addClass('fa-caret-up');
    });
    $(this).removeClass('fa-caret-up').addClass('fa-caret-down');
});

我仍然是jquery / Js的新人,对不起我的英语不好。

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

在插入符号元素上设置另一个类(caret-icon)并将click事件附加到该类:

<i class="caret-icon fa fa-caret-down"></i>

并使用toggleClass()方法:

$(document).on('click', '.caret-icon', function() {
   $(this).toggleClass('fa-caret-up fa-caret-down');
})

答案 1 :(得分:0)

使用'if - else'条件和'hasClass'方法。

这是Jquery

      $(document).ready(function () {
            $('.fa-caret-down').on('click', function () {
                if ($(this).hasClass('fa-caret-down')) {
                    $(this).removeClass('fa-caret-down').addClass('fa-caret-up');
                }else{
                    $(this).removeClass('fa-caret-up').addClass('fa-caret-down');
                }
            });
        });

答案 2 :(得分:0)

$('.fa-caret-down')找到DOM - 在执行代码时具有类fa-caret-down的元素,在初始化后的情况下。这些元素会获得一个删除fa-caret-down并添加fa-caret-up的点击处理程序。具有此处理程序的元素稍后不会更改。因此,再次点击其中一个元素也会移除fa-caret-down并添加fa-caret-up

如果元素当前具有类fa-caret-downfa-caret-up,则必须签入处理程序。如果它有类fa-caret-down,则必须删除fa-caret-down并添加fa-caret-up。如果它有fa-caret-up类,您必须删除fa-caret-up并添加fa-caret-down

您当前的代码$(this).removeClass('fa-caret-up').addClass('fa-caret-down');无效,因为它在初始化后仅执行一次。