I am trying to select the first immediate child <p> element of <li> element that contains an immediate <ul> child.
li>ul:parent>p:first-child
is what I have tried, thinking it will get the li's with immediate ul's then go back to the original li's with the :parent selector then select the immediate p's children that are first.
e.g.
<ul>
<li>
<p>SELECT ME!</p>
<ul>
<li><!--some more stuff-->
</ul>
</li>
</ul>
following the comments I should say that I am using this in a jQuery selector and I found the :parent selector in the jQuery API pages.
The problem that you have is that li > ul:parent will select the <ul> element, but specifying > p:first-child does not match anything, since your p element is within the li, not a direct descendent of the <ul>.
You can use jQuery's :has() selector for this:
$('li:has(ul) > p:first-child').css('background-color', 'red');
Here's a jsFiddle demo.
Unfortunately, I don't think this is possible with pure CSS.