如何根据通过函数传递的参数更改Jquery选择器

时间:2016-02-24 15:20:39

标签: javascript jquery html css arrays

我有一个功能:

 function factCheck(index) {

        if (arrayOfSites[index].indexOf("pdf") > -1) {


            $('#20').attr('style', 'color: red');
            $('#' + index).attr('style', 'color: red');

            console.log('index: ' + index);
            console.log($("#" + index).text());

        }
    }

所以我的问题是。当我使用$('#20')时,元素的文本颜色会改变颜色,但是当我使用时,$('#'+ index)它不起作用。 有趣的是,我用console.log ..它记录元素的文本,但我不能影响它的CSS。

为什么会这样?

//经过三个小时的会议......我带回了一些非常棒的答案!谢谢!!

编辑: 下面的代码显示了我如何抓取页面上的所有链接并添加等于该项目索引的id。所以这就是我试图抓住这个链接并以某种方式影响它的原因。我很欣赏你们所有人......我想我会接受字符串并在它通过函数进入时添加一个字母,然后从那一点操纵锚点。我只是想知道是否有更有效的方法来做到这一点。

  $(".lpage a").each(function (index) {

        // console.log(index + ": " + $(this).text());
        str = $(this).attr('href');
        arrayOfSites.push(str);
        str = arrayOfSites[index];

        title = $(this).attr('title');
        parseURL(str);

        $('.colContent2').append(cellOpen + '<a onclick="whichFunction(' + index + ');" id= "' + index + '"style="cursor:pointer;" class="injectedLinkCol2" >' + str + '</a>' + cellClose).prop("id", index);

    });

5 个答案:

答案 0 :(得分:2)

可能它与您的id属性的名称有关。看一下这个answer

答案 1 :(得分:0)

尝试使用toString()功能:

function factCheck(index) {

        if (arrayOfSites[index].indexOf("pdf") > -1) {


            $('#20').attr('style', 'color: red');
            $('#' + index.toString()).attr('style', 'color: red');

            console.log('index: ' + index);
            console.log($( "#" + index.toString() ).text());

        }
    }

答案 2 :(得分:0)

id名称或类名必须以名称开头,必须以下划线(_),连字符( - )或字母(a-z)开头。

类似

public string GetSomethingFromDB()
{
    string connectionString;
    string sql;
    string myVar;

    connectionString = "Data Source=MyServer; Port=MyPort; User ID=someuser; Password=mypassword; Database=myDatabase";
    sql = "select something from something";
    using (AseConnection conn = new AseConnection(connectionString))
    {
        using (AseCommand cmd = new AseCommand(sql, conn))
        {
            try
            {
                conn.Open();
                using (AseDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        myVar= reader.GetString("column1").Trim();
                    }
                    reader.Close();
                    reader.Dispose();
                }
                conn.Close();
                conn.Dispose();
                cmd.Dispose();
                return (myVar);
            }
            catch (AseException ex)
            {
                //do some stuff
            }
            finally
            {
                 //do some stuff
            }
        }
    }
} 

会起作用。

请参阅:Valid CSS Selectors.

答案 3 :(得分:0)

我无法重现确切的问题。我做了一支笔(link)并尝试了你的问题,但效果很好。所以在剩下的代码中必定会出现一些错误。

相关说明

在CSS中,不允许以数字开头(允许使用类)。所以写点像

#20{
    color: red;
}

不起作用,但该规则仅适用于css。 JQuery仍然有效,这意味着您唯一的选择是编写内联样式或使用JQuery的.attr.css,但jQuery.attr()将重置所有内联样式。您将继续使用.css()。所以,最好不要用数字开始你的id。

尝试使用.css代替.attr,看看它是否有效。

答案 4 :(得分:0)

$('。exampleClass:eq('+ index +')')。css(“color”,“yellow”);

出于某种原因工作

$('。exampleClas')。eq(index).css(“color”,“yellow”);

不起作用。